怎么说c编译器他们是十六进制值

时间:2013-01-15 18:34:59

标签: c

我正在尝试编写校验和评估程序。我写了下面的代码;

0xFF -
    (  (
        0x10 + 0x01 +0x00+  0x13+  0xa2+ 0x00+ 0x40+  0x4a+
            0xfd + 0x15 + 0xff + 0xfe+ 0x00+ 0x08 +
                ( 1 + 30 ) +
                ( 2 + 30 )
           )
   & 0xFF
 )

看到行(1 + 30)和(2 + 30),它们被转换为十六进制值,但是在加法时它们被转换,结果不是预期的。有没有办法说(1 + 30)是我的c编译器兄弟的十六进制值?

1 个答案:

答案 0 :(得分:2)

如果您希望编译器使用30作为十六进制小数值,请使用0x提及它。与(0x1 + 0x30) + (0x2 + 0x30)

一样

int a - 此处a可以将+2^31的值存储到-(2^31-1),其范围不是09a始终以二进制格式存储值。我们可以用十进制,十六进制或八进制等任何格式打印它。 printf("%d, %x, %o", a, a, a);

因此,如果您想在a的位置使用变量30。使用如下。

int a = 0x30; //or int a = 48; 48 is the decimal representation of 0x30
....
(0x1 + a)
....

不要混淆十六进制值。它只是一个价值的代表。如果你有一支10笔,你可以这样说

  • 我有十进制格式的10
  • 我有十六进制格式的0xA
  • 我有八进制格式的12