大家好(这里是新手),
我在嵌入式系统上工作,我需要将十六进制数转换为ASCII字符串.
请在回答之前阅读以了解我的要求.
例如hexNumber = 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';