我现在正在开发一个与操作系统相关的项目,有一个步骤需要使用C来检查十六进制数是否以3
开头。
目前我的想法是将该十六进制数转换为字符串并检查初始字符,但却找不到任何文档来执行此操作。有人有什么想法吗?也许只是一个提示。
答案 0 :(得分:7)
有很多方法可以将数字转换为十六进制字符串(sprintf
出现在我的脑海中; How can I convert an integer to a hexadecimal string in C?列出更多信息) - 但是,为什么要这样做?
通过将每个半字节(4位)转换为十六进制“数字”来形成完整的十六进制数。要获得第一个,您可以将值除以16,直到达到最终(='first',以十进制和十六进制值共同的从左到右的表示法)数字。如果那是3,你就完成了。
假设value
是无符号号码:
while (value > 15)
value >>= 4;
然后检查是否value == 3
。
答案 1 :(得分:3)
您的想法不错,您可以使用sprintf
,其功能类似于printf
/ fprintf
,而非打印
在屏幕上(或更准确地说:写入FILE*
缓冲区),它将内容存储在char
缓冲区中。
char value[16]; // more than enough space for 4 byte values
int reg = 0x3eef;
sprintf(value, "%x", reg);
if(value[0] == '3')
printf("The hexadecimal number 0x%s starts with a 3.\n", value);