【问题标题】:Does endianness affect the values in a character array?字节序会影响字符数组中的值吗?
【发布时间】:2014-07-16 06:04:42
【问题描述】:

我有一个存储为 16 字节字符数组的 IPv6 地址。 uchar ip6[16]; 我必须检查它是多播地址还是单播地址。已知的方法是检查第一个字节,如果其值为“FF”,则意味着它是多播地址。现在我想知道字节序是否会影响字符数组的存储。

【问题讨论】:

  • 我们必须查看代码。很可能,没有。但你永远不知道。字符数组可能包含主机字节顺序的地址。
  • 没有。 char 不受字节序的影响,就像 sizeof(char) == 1 在任何平台上一样。
  • @barakmanos char j[4]; int32_t i=1; memcpy(&j, &i, 4); -- 仍然认为该字符数组的内容不依赖于字节序?
  • @DavidSchwartz:不,但您已将int i 添加到“等式”中。 OP 在他/她的问题中声明uchar ip6[16]!!!
  • @barakmanos 我有char j[4];。也可以是uchar ip6[16]。答案完全取决于他的数组是如何填充的。 (OP 没有说明他的数组是如何填充的,这是我们需要知道的。我们不知道 OP 的等式中还有什么。)

标签: arrays char endianness


【解决方案1】:

不,它没有。您描述的代码从不将地址转换为主机字节顺序。所以主机的字节顺序不会影响数组的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2018-02-10
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多