X86 如何识别给定十六进制字符串的尾数?

X86 如何识别给定十六进制字符串的尾数?,x86,endianness,X86,Endianness,例如: 十六进制字符串是:-706f7765727368656c6c 上述字符串的ASCII为:powershell 我想知道如何识别上面的字符串是小端还是大端 假设我将字节顺序更改为另一端6f706577737265686c6c 然后ascii是“opwesrehll” 如果我改变字节顺序,那么值也在改变。我认为转换过程中出现了一些问题 如何在不更改主值的情况下将“powershell”转换为其他endian格式 提前谢谢 “字节没有尾数。”–@MichaelPetch 是正确的,因为ASCI

例如:

十六进制字符串是:-706f7765727368656c6c

上述字符串的ASCII为:powershell

我想知道如何识别上面的字符串是小端还是大端

假设我将字节顺序更改为另一端6f706577737265686c6c 然后ascii是“opwesrehll”

如果我改变字节顺序,那么值也在改变。我认为转换过程中出现了一些问题

如何在不更改主值的情况下将“powershell”转换为其他endian格式

提前谢谢


“字节没有尾数。”–@MichaelPetch

是正确的,因为ASCII是每个字母一个字节。因此,只需通过一次读取一个字母的每个字节来构建单词

“假设我将字节顺序更改为其他端
6f706577737265686c6c

则ascii为“opwesrehll”

如果您一次翻转2个字节,则会发生这种情况,但这是ASCII(字母字符)…
您应该为每个字母读取一个字节,并且不涉及翻转/endianness。翻转仅计算
Short
(2字节)中存储的数值或
整数
/
浮点
(4字节),甚至每
/
(8字节)等

“我想知道如何识别上面的字符串是小端还是大端。”


旁注:UTF-16(非ASCII)有时会使用超过1字节的字母字符(尤其是日语、俄语、阿拉伯语等外国字母)。在这种情况下,文本将以一个名为BOM(字节顺序标记)的双字节标志开始,以说明字节的尾数。检查
字节[0]
如果第一个字节
[0]
给出255作为值(0xFF),然后检查
字节[1]
如果下一个字节给出254(0xFE),您的UTF文本是little-endian。对于big-endian,您希望0xFE后跟0xFF。这一切仍然有效,因为您的检查一次检查一个字节。

Endianness通常不是应用于(ASCII)的概念字符串,因为每个字符有一个字节,如果整个字符串以相反的顺序存储在内存中会很奇怪。字节没有endianness。此外,您可以检测系统的endianness,但不能检测数据的endianness。数据的endianness是编写器使用的;问问。所以,我问您:当您写入70时,您的意思是值是7*16吗+0*1?高半字节优先?BOM与UTF-8没有此目的。它只是作为一种通信编码的方式。(有人支持;有人反对。)一个代码点的UTF-8字节(代码单位)仍然是一个特定的字节序列。单词的尾数不相关。