【问题标题】:How do I correct for endianness in the Well-Known Binary format?如何纠正众所周知的二进制格式中的字节顺序?
【发布时间】:2014-12-02 22:29:53
【问题描述】:

我正在尝试找出 WKB Format 并且正在关注字节序。

以这个例子为例,这是一个以十六进制表示的点几何图形:

000000000140000000000000004010000000000000

分割成字节:[name of part:number of bytes]

[endiannes:1][type:4][x:8][y:8]

问题是,如果我尝试切换字节顺序,我会:

  • 读取第一个字节,反转所有连续字节,然后将其拆分为单独的部分?

或者

  • 拆分成单独的部分,读取字节顺序,在单独的部分中反转字节?

【问题讨论】:

  • @Jon 谢谢。如果您发布答案,我会接受。
  • 我支持 Jon 的回答 - 字节排序是每个元素最明智的做法。注意:Java 没有任何无符号类型:如果您有一个具有“1 字节无符号整数”的数据类型,您需要一个 java short 来存储所有可能的值;同样,您需要 long 来存储 4 字节无符号整数的所有可能值。 (显然,32 位就是 32 位,因此您可以将 uint32_t 的位填充到 Java int 中,但是当您尝试顶部打印或操作非常大的值(设置了高位)时,它不会像您一样工作期望,因为它会将它们视为负值...

标签: c parsing geospatial endianness


【解决方案1】:

第二个选项。 ——乔恩

如果你想创建一个切换字节序的 WKB,你当然还必须将第一个字节从 00 更改为 01 或相反。

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2021-07-25
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多