gpt4 book ai didi

c - 从二进制数据中获取双字

转载 作者:行者123 更新时间:2023-11-30 20:07:40 25 4
gpt4 key购买 nike

char * data = 0xFF000010FFFFFFFFFFFFFFFFFFFFFFFFFFF;

我想在data[1] (0x00000010)中获取双字并将其存储在var int i中。

这样可以解决问题吗?

int i = (int) data[1]+data[2]+data[3]+data[4]

最佳答案

您试图仅添加四个字节,而不是将值放入整数的正确部分。不指定endianness由于您的平台不同,无法提供最终答案。

一般方法是将每个字节放置在 int 的正确位置,如下所示:

int i = 256 * 256 * 256 * 数据[0] + 256 * 256 * 数据[1] + 256 * 数据[2] + 数据[3]

(大端字节序示例)

请注意,索引是从 0 开始的,而不是像示例中那样从 1 开始。本例中的“基数”是 256,因为每个字节可以表示 256 个值。

要理解为什么会这样,请考虑十进制数

5234

您可以将其重写为:

5000 + 200 + 30 + 4

或 10 * 10 * 10 * 5 + 10 * 10 * 2 + 10 * 3 + 4

在处理每个数字的数据时,将值乘以数字基数到数字位置的幂(基数 10 的最右边数字是 10^0,然后是 10^1 、10^2 等)。

关于c - 从二进制数据中获取双字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com