我打开了一个.exe文件,发现字符串“Premium”以下列方式存储
50 00 72 00 65 00 6D 00 69 00 75 00 6D 00
我只是不知道为什么每个字符附加“00”以及它的用法是什么。
谢谢,
答案 0 :(得分:1)
它可能是Unicode字符串的UTF-16编码。这是使用Python的一个例子:
>>> u"Premium".encode("utf16")
'\xff\xfeP\x00r\x00e\x00m\x00i\x00u\x00m\x00'
# ^ ^ ^ ^ ^ ^ ^
在字节标记表示字节序之后,您可以看到交替的字母和空字节。
\xff\xfe
是字节顺序标记;它表示每个16位值的低位字节首先出现。 (如果高位字节首先出现,则字节标记为\xfe\xff
;对于哪个标记意味着什么没有特别的意义。)
然后将每个字符编码为16位值。对于许多值,UTF-16编码只是其Unicode代码点的简单无符号16位表示。具体来说,8位ASCII值只使用空字节作为高位字节,其ASCII值作为低位字节。