c - 如何在 C 中检查十六进制数 (%x) 是否以某个数字开头?

标签 c hex

我现在正在做一个操作系统相关的项目,有一个步骤需要使用 C 检查十六进制数是否以 3 开头。

目前我的想法是将该十六进制数转换为字符串并检查初始字符,但找不到任何相关文档。有人知道吗?也许只是一个提示。

最佳答案

有很多方法可以将数字转换为十六进制字符串(sprintf 浮现在脑海;How can I convert an integer to a hexadecimal string in C? 列出更多)——但是,为什么要这样做?

一个完整的十六进制数是通过将每个半字节(4 位)转换为十六进制“数字”而形成的。要获得第一个,您可以将您的值除以 16,直到达到最后一个(=“第一个”,十进制和十六进制值通用的从左到右的表示法)数字。如果这是 3,你就完成了。

假设 value 是一个无符号数:

while (value > 15)
     value >>= 4;

然后检查是否 value == 3

关于c - 如何在 C 中检查十六进制数 (%x) 是否以某个数字开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079147/

相关文章:

php - 在 PHP 中对相似的十六进制代码进行分组

javascript - 仅在按键后颜色变化

c++ - 将具有数字的十六进制表示形式的字符串转换为实际数值

c - C语言如何重复一个字符串

C# 十进制到十六进制 & 十六进制到十进制/十六进制到 ascii 在 LINQ

c++ - cout << hex 与 uint8 和 uint16 的行为

c - 使用循环范围变量写入内存并从外部访问它

C - 创建/写入/读取命名管道

c - 如何在 Ubuntu 中创建 C 程序的可执行文件

c++ - 将阴影添加到 ListView(图标模式)?