十六进制字节顺序

HexBinary byte order

关于 XML 的 HexBinary 的第一个 google link 显示 link 到 this 文章。

有一个十六进制表示的例子:

"<?xml version="1.0" encoding="UTF-8"?>"
"3f3c6d78206c657673726f693d6e3122302e20226e656f636964676e223d54552d4622383e3f"

但是当我尝试自己实现编码或使用在线转换器时,我收到下一个字符串:

"3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E"

3f3c 与 3c3f 的字节顺序差异。它不可能是 UTF-16 问题,因为它会产生类似于 3c003f00 或 003c003f 的内容。

所以,我的问题是:是文章(O'Reilly 的书)中的问题还是 xsd:hexBinary 的特殊规则需要反转字节顺序?

没有告诉您反转字节顺序的规则。

XSD specification for hexBinary data type 就是:

hexBinary represents arbitrary hex-encoded binary data.

请注意 arbitrary 这个词 - 它没有告诉您如何对数据进行编码,或者您需要在编码完成后每两个字节交换一次。

这是书中的一个错误。这本书的作者似乎只是将文本复制并粘贴到十六进制编辑器或转换器中,并没有注意到在默认设置下它以 little-endian 字节顺序以 2 个字节为单位显示数据。如果您不习惯使用二进制数据,这是一个很容易犯的错误。

似乎没有报告此勘误。如果您愿意,可以向 https://www.oreilly.com/catalog/errata.csp?isbn=9780596004217

提交勘误表