如何识别给定的十六进制字符串的字节顺序?
How to identify the endianness of given hex string?
例如:
十六进制字符串是:- 70 6f 77 65 72 73 68 65 6c 6c
上述字符串的 ASCII 是:powershell
我想知道如何识别上面的字符串是小端还是大端
假设我将字节顺序更改为其他字节序 6f 70 65 77 73 72 65 68 6c 6c
那么 ascii 是 “opwesrehll”.
如果我改变字节顺序,那么值就会改变。我认为转换过程中出了点问题。
如何在不改变主值的情况下转换为其他端格式 "powershell" ?
提前致谢
"Bytes don't have endianness." – @MichaelPetch
是正确的,因为你的 ASCII 是每个字母一个字节。因此,只需通过一次读取一个字母的每个字节来构建你的单词。
"Suppose if I change byte order to other endian 6f 70 65 77 73 72 65 68 6c 6c
then the ascii is “opwesrehll”.
如果你一次翻转 2 个字节就会发生这种情况,但这是 ASCII(字母字符)...
你应该阅读 每个字母一个字节,不涉及flips/endianness。翻转只计算存储在 Short
(2 字节)或 Integer
/Float
(4 字节)内的 数值,甚至每个 Long
/Double
(8 字节)等
"I want to know how to identify the above string is in little endian or big endian."
旁注:UTF-16(非 ASCII)有时可以使用超过 1 个字节的字母字符(尤其是日俄阿拉伯语等外国字母)。对于这种情况,文本将以称为 BOM(字节顺序标记)的两字节标志开始,以说明字节是什么字节序。检查 bytes[0]
并且如果第一个字节 [0]
给出 255 作为值 (0xFF),然后还检查 bytes[1]
如果下一个字节给出 254 (0xFE),则您的 UTF 文本是小端。对于大端,您期望 0xFE 后跟 0xFF。仍然一切正常,因为您一次检查 一个字节...
例如:
十六进制字符串是:- 70 6f 77 65 72 73 68 65 6c 6c
上述字符串的 ASCII 是:powershell
我想知道如何识别上面的字符串是小端还是大端
假设我将字节顺序更改为其他字节序 6f 70 65 77 73 72 65 68 6c 6c 那么 ascii 是 “opwesrehll”.
如果我改变字节顺序,那么值就会改变。我认为转换过程中出了点问题。
如何在不改变主值的情况下转换为其他端格式 "powershell" ?
提前致谢
"Bytes don't have endianness." – @MichaelPetch
是正确的,因为你的 ASCII 是每个字母一个字节。因此,只需通过一次读取一个字母的每个字节来构建你的单词。
"Suppose if I change byte order to other endian
6f 70 65 77 73 72 65 68 6c 6c
then the ascii is “opwesrehll”.
如果你一次翻转 2 个字节就会发生这种情况,但这是 ASCII(字母字符)...
你应该阅读 每个字母一个字节,不涉及flips/endianness。翻转只计算存储在 Short
(2 字节)或 Integer
/Float
(4 字节)内的 数值,甚至每个 Long
/Double
(8 字节)等
"I want to know how to identify the above string is in little endian or big endian."
旁注:UTF-16(非 ASCII)有时可以使用超过 1 个字节的字母字符(尤其是日俄阿拉伯语等外国字母)。对于这种情况,文本将以称为 BOM(字节顺序标记)的两字节标志开始,以说明字节是什么字节序。检查 bytes[0]
并且如果第一个字节 [0]
给出 255 作为值 (0xFF),然后还检查 bytes[1]
如果下一个字节给出 254 (0xFE),则您的 UTF 文本是小端。对于大端,您期望 0xFE 后跟 0xFF。仍然一切正常,因为您一次检查 一个字节...