将uint32地址转换为char数组



出于打印目的,我想将uint32字符串转换为char字符串。我的uint32是一个看起来像"0x00402B00"的地址

我可以不太关心前面的" 0x ",但它是否在那里并不重要。

如何将此数字转换为char字符串,其中:

string[0] = 0
string[1] = 0
string[2] = 4
string[3] = 0
string[4] = 2

…等等。

像这样的东西会工作吗?:

uint32 address = 0x00402b00;
char string[8];
sprintf(string, '%u', address);

任何想法?

三件事:

  1. char数组需要有一个终止NUL的空间,所以它应该至少有9个元素(而不是8个)。
  2. sprintf格式字符串参数需要是双引号字符串(而不是单引号字符串)。
  3. 格式字符串%08x将确保一个8位,前导零填充的十六进制结果(%u是一个未填充的十进制)。

代码应该是:

uint32 address = 0x00402b00;
char string[9];
sprintf(string, "%08x", address);

使用printf(或sprintf)中的"x"转换说明符应该可以做到这一点。

如果不需要0x部分,可以省略0x部分。

代码:

#include <cstdio>
int main() {
    unsigned int address = 0xDEADBEEF;
    printf("Lowercase: 0x%xn", address);
    printf("Uppercase: 0x%Xn", address);
    return 0;
}
输出:

g++ -O2 -Wall -pedantic -pthread test.cpp && ./a.out

Lowercase: 0xdeadbeef
Uppercase: 0xDEADBEEF

最新更新