如何将数字转换为十进制字符串?

use*_*932 0 c c++ hex ascii

大家好(这里是新手),

我在嵌入式系统上工作,我需要将十六进制数转换为ASCII字符串.

请在回答之前阅读以了解我的要求.

例如hexNumber = 0xFF ASCII = 0x32 0x35 0x35

ASCII字节表示十六进制数的十进制值.即0xFF为255,0xFE为254等...

实质上,每个字节应为十六进制数的十进制表示生成3个字节.

使用键盘不输入值,它是从智能卡获得的值.

Joe*_*e Z 5

您可以使用C风格sprintf():

char buf[4];
sprintf(buf, "%03d", 0xFF & (unsigned)byte_to_convert);
Run Code Online (Sandbox Code Playgroud)

您也可以使用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';
Run Code Online (Sandbox Code Playgroud)