I used strtol
要将字符串转换为十六进制,现在我需要将其打印到屏幕上。我不确定是否可以使用sprintf
因为我在这块板上只有 20k 内存可以使用。欢迎替代方案。
要手动执行此操作,最简单的方法是使用一个将 nybbles 映射到 ASCII 的表:
static const char nybble_chars[] = "0123456789ABCDEF";
然后将一个字节转换为 2 个十六进制字符——假设unsigned char
是字节的最佳表示,但不对其大小进行假设 - 提取每个 nybble 并获取它的 char:
void get_byte_hex( unsigned char b, char *ch1, char *ch2 ) {
*ch1 = nybble_chars[ ( b >> 4 ) & 0x0F ];
*ch2 = nybble_chars[ b & 0x0F ];
}
这可以直接扩展到更广泛的数据类型,并且应该在各种体系结构中生成相当简洁的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)