如何使用C比较十六进制值?

mai*_*ved 8 c hex

我正在使用十六进制值.到现在为止,我知道如何打印十六进制值以及精确的东西.现在我想比较十六进制值.例如,我正在将文件中的数据读入char缓冲区.现在我想比较缓冲区中数据的十六进制值.有这样的事吗?

if  hex(buffer[i]) > 0X3F  
then
//do somthing
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Pau*_*l R 15

你快到了:

if (buffer[i] > 0x3f)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

请注意,不需要将任何内容"转换"为十六进制 - 您可以直接比较字符或整数值,因为十六进制常量(如0x3f)只是表示整数值的另一种方式.0x3f == 63(十进制)== ASCII'?'.

  • 是的 - 一个char实际上只是C和相关语言中的一种整数 - 你可以用int做任何事情,你也可以用char做. (4认同)

Sha*_*baz 6

计算机中的数字均为0和1。以10或16(十六进制)或字符(例如'a')查看它们不会更改数字。

因此,与十六进制相比,您无需执行任何操作。

例如,如果您有

int a = 71;
Run Code Online (Sandbox Code Playgroud)

那么以下两个语句是等效的:

if (a == 71)
Run Code Online (Sandbox Code Playgroud)

if (a == 0x47)
Run Code Online (Sandbox Code Playgroud)