小编enr*_*856的帖子

将字节数组转换为 uint64 时出现错误

我试图找出将字节数组转换为uint64_t( unsigned long long) 时的错误。

我知道你可以通过轮班来做到这一点,但这不是我的问题。我想用乘法来做到这一点。我想知道为什么在某些情况下乘法没有按计划进行。

这段代码的结果是正确的:

#include <stdio.h>

int main()
{
    unsigned char byte[8];
    unsigned long long x;

    byte[0] = 0x15;
    byte[1] = 0x15; 
    byte[2] = 0x17;
    byte[3] = 0x18; 
    byte[4] = 0x19;
    byte[5] = 0x20;
    byte[6] = 0x21;
    byte[7] = 0x12;
            
    x = (byte[0] * 0x100000000000000) +
        (byte[1] * 0x1000000000000) + 
        (byte[2] * 0x10000000000) + 
        (byte[3] * 0x100000000);

    x = x +
        (byte[4] << 24) + 
        (byte[5] << 16) + 
        (byte[6] << 8) + 
        byte[7]; …
Run Code Online (Sandbox Code Playgroud)

c serialization deserialization

2
推荐指数
1
解决办法
164
查看次数

标签 统计

c ×1

deserialization ×1

serialization ×1