组成整数的二进制表示

时间:2012-09-25 13:15:05

标签: c binary

这就是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

3 个答案:

答案 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";

很乐意做你的工作。 : - )