将C字节数组转换为long long

voi*_*dzm 5 c arrays byte long-integer

我的应用程序中有一个8字节的数组,包含以下数据:

00000133339e36a2
Run Code Online (Sandbox Code Playgroud)

这个数据代表了一个很长的(在平台上数据被写入,在Mac上,这将是一个很长的长),其值为

1319420966562
Run Code Online (Sandbox Code Playgroud)

在实际应用中,这是一组半随机数据,因此数字总是不同的.因此,我需要将字节数组转换为可打印的long long.

我已经尝试将数据直接投入很长时间,但我想出了

1305392
Run Code Online (Sandbox Code Playgroud)

我应该看到上面的数字.

对于那些在C字节操作方面比我更有经验的人,我如何正确地将字节数组转换为long long?

编辑:奇怪的是,您的所有解决方案都保持输出相同的数字:866006690.这是数据的最后四个字节的十进制等效值.

Bla*_*ear 6

这似乎是联合有用的(罕见)情况之一:

union number
{
    char charNum[16];
    long long longNum;
};
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 2

long long num = 0;
for(int i = 0; i < 8; i++) {
    num = (num << 8) | byte_array[i];
}
Run Code Online (Sandbox Code Playgroud)

假设它们以大端存储。