这就是1024 = 0x400
,我假设它的二进制表示(little endian)是\\x00\\x4\\x00\\x00
。我尝试做这样的事情,
int main()
{
const char *str = "\\x00\\x4\\x00\\x00";
const int *p = (const int *)str;
printf("%d\n", *p);
}
但为什么上面的代码无法给我1024
?
答案 0 :(得分:8)
因为您已转义\
。 Unescape他们:
const char *str = "\x00\x4\x00\x00";
答案 1 :(得分:4)
字符串中有太多反斜杠。
请改为尝试:
#include <stdio.h>
int main(void)
{
const char *str = "\x00\x4\x00\x00";
const int *p = (const int *)str;
printf("%d\n", *p);
return 0;
}
ideone的输出:
1024
答案 2 :(得分:1)
您知道在任何printf语句结尾处输入换行符时会发生什么,即 \ n ,“\”部分称为转义削减。这就是 \ n 无法打印的原因。同样,如果您提供“\\ x00 \\ x4 \\ x00 \\ x00”,则意味着显示 \ x00 \ x4 \ x00 \ x00 并不意味着什么。所以,你必须摆脱那些 \(这些斜杠)。因此,
const char *str = "\x00\x4\x00\x00";
很乐意做你的工作。 : - )