【发布时间】:2015-08-23 14:13:12
【问题描述】:
<< 不适用于 long 类型,我们如何将 8 字节字符数组转换为 long?
#define word_size 8
long num = 0;
char a[word_size] = "\x88\x99\xaa\x0bb\xcc\xdd\xee\xff";
for (i=0; i < word_size;i++) {
a[(word_size-1) - i] |= (num << (8*(word_size - i - 1))) & 0xFF;
}
printf("%lx\n", num);
【问题讨论】:
-
<<与long配合得很好。在这种情况下,num始终为 0,因此您将a清除为全 0。 -
long不一定是 64 位。如果您想确定,请使用来自stdint.h的int64_t。这就是建议的方式。另外,请确保数组具有正确的字节顺序。