Compilation 为什么字符串以以下方式存储在PE文件中

Compilation 为什么字符串以以下方式存储在PE文件中,compilation,reverse-engineering,Compilation,Reverse Engineering,我打开了一个.exe文件,发现字符串“Premium”以以下方式存储 50 00 72 00 65 00 6D 00 69 00 75 00 6D 00 我只是不知道为什么每个字符后面都加上“00”以及它的用法 谢谢,这可能是Unicode字符串的UTF-16编码。下面是一个使用Python的示例: >>> u"Premium".encode("utf16") '\xff\xfeP\x00r\x00e\x00m\x00i\x00u\x00m\x00' # ^

我打开了一个.exe文件,发现字符串“Premium”以以下方式存储

50 00 72 00 65 00 6D 00 69 00 75 00 6D 00

我只是不知道为什么每个字符后面都加上“00”以及它的用法


谢谢,

这可能是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值作为低阶字节。

我不明白“\xff\xfeP\x00r\x00e\x00m\x00i\x00u\x00m\x00”是如何“高级”的,您能解释一下吗?