char * data = 0xFF000010FFFFFFFFFFFFFFFFFFFFFFFFFFF;
我想在data[1] (0x00000010)
中获得DOUBLE WORD并将其存储在var int i
中。
这可以解决这个问题吗?
int i = (int) data[1]+data[2]+data[3]+data[4]
答案 0 :(得分:2)
您试图只添加四个字节,而不是将值放入整数的正确部分。如果没有指定平台的endianness,则无法提供最终答案。
一般方法是将每个字节放在int的正确位置,如下所示:
int i = 256 * 256 * 256 * data [0] + 256 * 256 * data [1] + 256 * data [2] + data [3]
(big endian示例)
请注意,索引是基于0的,而不是像您的示例中那样基于1。此示例中的“base”为256,因为每个字节可以表示256个值。
要理解为什么会这样,请考虑十进制数
5234
您可以将其重写为:
5000 + 200 + 30 + 4
或10 * 10 * 10 * 5 + 10 * 10 * 2 + 10 * 3 + 4
当您处理每个数字的数据时,您将该值乘以数字基数到数字位置的数字(基数10的最右边数字是10 ^ 0,然后是10 ^ 1 ,10 ^ 2等。)
答案 1 :(得分:1)
您必须从字符串转换为实际数据。考虑使用atol()或类似的东西来获取内存中的值,然后担心编辑它。