大家好(这里是新手),
我在嵌入式系统上工作,我需要将十六进制数转换为 ASCII 字符串。
请在回答之前阅读以了解我的要求。
例如十六进制数 = 0xFF ASCII = 0x32 0x35 0x35
ASCII 字节表示十六进制数的十进制值。即 0xFF 是 255,0xFE 将是 254,等等...
基本上,每个字节应该生成 3 个字节用于十六进制数的十进制表示。
该值不是使用键盘输入的,它是从智能卡中获取的值。
最佳答案
为此,您可以使用 C 风格的 sprintf()
:
char buf[4];
sprintf(buf, "%03d", 0xFF & (unsigned)byte_to_convert);
您还可以使用 snprintf()
,当输出格式不固定时,这通常更安全,但对于此应用程序来说无关紧要。
如果您的嵌入式环境无法承受从库中链接 printf
系列函数的成本(它们可能相当大),则使用除法和模数进行转换,如下所示:
char buf[4];
buf[3] = 0; /* NUL trminator */
buf[2] = (unsigned)byte_to_convert % 10 + '0';
buf[1] = (unsigned)byte_to_convert / 10 % 10 + '0';
buf[0] = (unsigned)byte_to_convert / 100 + '0';
关于c++ - 如何将数字转换为十进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376272/