【问题标题】:Write with 8bit pointer, read with 32bit pointer [duplicate]用8位指针写,用32位指针读[重复]
【发布时间】:2016-10-05 07:36:04
【问题描述】:

如果我们用 8 位指针写入 4 次 1B 的 char,然后用 32 位指针读取 4B,会发生什么?为什么不建议这样做,会发生什么情况?

【问题讨论】:

  • 结果将取决于系统的endianness。因此它不是可移植的代码。
  • 严格别名不适用,因为您始终可以别名为 8 位指针。
  • @unwind 也许stackoverflow.com/questions/23848188/… 是一个更好的副本
  • @doron 不是CHAR_BIT > 8。
  • @doron 您可以从pointer-to-x 转换为pointer-to-char,但不能反过来。所以严格的别名确实适用,假设“8位指针”是一个字符类型。

标签: c pointers casting


【解决方案1】:

当您将 32 位作为整数读回时,您将获得所写内容的整数表示。

您所描述的是一种常用于反序列化二进制数据的技术。反向过程将序列化数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2015-11-09
    • 1970-01-01
    • 2013-01-11
    • 2016-03-05
    相关资源
    最近更新 更多