关于 XML 的 HexBinary 的第一个 google 链接显示指向 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.
请注意任意这个词 - 它没有告诉您如何对数据进行编码,或者您需要在编码完成后每两个字节交换一次。
这是书中的一个错误。这本书的作者似乎只是将文本复制并粘贴到十六进制编辑器或转换器中,并没有注意到在默认设置下它以 2 字节为单位显示数据 little-endian字节序。如果您不习惯使用二进制数据,这是一个很容易犯的错误。
看起来这个勘误表没有被报告过。如果您愿意,可以向 https://www.oreilly.com/catalog/errata.csp?isbn=9780596004217 提交勘误表。
关于java - 十六进制字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63575873/