- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我得到了一个有 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/
**摘要:**细心的你也一定关注到,有的网址是https开头的,有的是http。https开头的网站前面,会有一把小锁。这是为什么呢? 本文分享自华为云社区《还不知道SSL证书已经是刚需了?赶快来了解
我想分析多个mp3文件并获取文件的bpm。因此我使用 soundstretch。首先,我使用 sox 转换 mp3 文件 sox -t mp3 -r 44100 -c 2 file.mp3 -t wa
我得到了一个有 8 个位置的 char 数组(char data[8];),这个数组上面有一个 unsigned long long int 值(8 个字节大小)... data[0] 的第一个字节是
我是一名优秀的程序员,十分优秀!