gpt4 book ai didi

c++ - 不简单,从 char[8] 转换 long long

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:04 25 4
gpt4 key购买 nike

我得到了一个有 8 个位置的 char 数组(char data[8];),这个数组上面有一个 unsigned long long int 值(8 个字节大小)... data[0] 的第一个字节是long long int,data[1] 有第二个等等。我的问题是如何将该值再次放在 unsigned long long 变量上?

我试过移位但值不等于原始值,我怎么能在不改变原始数组的情况下做到这一点...

字节的顺序是小端,变量的正常顺序(从高位到低位)

这是打印出与预期不同的值的代码。

char vec[8]={0,0,0,0,0,0,0,1};

unsigned long long value = *((unsigned long long*) vec);

std::cout<<value;

return 0;

结果应该是 1 而不是 72057594037927936。感谢您的耐心等待。

最佳答案

假设 data 数组的字节顺序与生成的 long long 值相同

unsigned long long ll;
assert(sizeof ll == sizeof data);
memcpy(&ll, data, sizeof ll);

避免基于转换的解决方案。它们违反了严格的别名语义,因此不能保证有效。

关于c++ - 不简单,从 char[8] 转换 long long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662039/

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