java - 十六进制字节顺序

标签 java xml xsd hex

关于 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/

相关文章:

Java - Spring Ws - 在 XSD 文件中加载相对包含 (Tomcat 8)

简单类型和属性的 XML 模式?

c# - XML 验证 C# 本地化

java - OnDelete 级联失败并出现约束冲突错误 () Hibernate

java .jar文件转换为.exe文件

html - 使用 XSLT 将 XML 拆分为多个 HTML 文件

c# - 在 ASP.NET 中从 SQL Server 读取 XML 文件

java - Hibernate:通过从某个位置读取 hbm 映射文件来创建动态表

Java双向加密库

php - 使用复杂 XML 中的 Xpath 读取父节点的父节点