如何在C中将整数转换为十六进制字符串?

use*_*894 33 c

如何在C中将整数转换为十六进制字符串?

示例:整数50将转换为十六进制字符串"32""0x32".

C J*_*son 38

这段代码

int a = 5;
printf("%x\n", a);
Run Code Online (Sandbox Code Playgroud)

版画

5
Run Code Online (Sandbox Code Playgroud)

这段代码

int a = 5; 
printf("0x%x\n", a);
Run Code Online (Sandbox Code Playgroud)

版画

0x5
Run Code Online (Sandbox Code Playgroud)

这段代码

int a = 89778116;
printf("%x\n", a);
Run Code Online (Sandbox Code Playgroud)

版画

559e7c4
Run Code Online (Sandbox Code Playgroud)

如果以格式大写x,则将十六进制值大写:

int a = 89778116;
printf("%X\n", a);
Run Code Online (Sandbox Code Playgroud)

版画

559E7C4
Run Code Online (Sandbox Code Playgroud)

如果要打印指针,请使用p格式说明符:

char* str = "foo";
printf("0x%p\n", str);
Run Code Online (Sandbox Code Playgroud)

版画

0x01275744
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用`#`修饰符而不是编写自己的`0x`,尤其是`%p`,其行为是实现定义的,可能已经包含了`0x`. (3认同)
  • 可能也想提到`snprintf`。 (2认同)

Pit*_*kos 21

以下代码采用整数形式,并以十六进制格式生成一个字符串:

int  num = 32424;
char hex[5];

sprintf(hex, "%x", num);
puts(hex);
Run Code Online (Sandbox Code Playgroud)

7ea8
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 18

通常printf使用%x格式说明符(或其表兄弟之一).

  • 想添加一个例子吗? (3认同)
  • strtol()与他要求的相反。那是错误的方向。 (2认同)

小智 10

有趣的是,这些答案的使用printf就像给定的一样. printf将整数转换为十六进制字符串值.

//*************************************************************
// void prntnum(unsigned long n, int base, char sign, char *outbuf)
// unsigned long num = number to be printed
// int base        = number base for conversion;  decimal=10,hex=16
// char sign       = signed or unsigned output
// char *outbuf   = buffer to hold the output number
//*************************************************************

void prntnum(unsigned long n, int base, char sign, char *outbuf)
{

    int i = 12;
    int j = 0;

    do{
        outbuf[i] = "0123456789ABCDEF"[num % base];
        i--;
        n = num/base;
    }while( num > 0);

    if(sign != ' '){
        outbuf[0] = sign;
        ++j;
    }

    while( ++i < 13){
       outbuf[j++] = outbuf[i];
    }

    outbuf[j] = 0;

}
Run Code Online (Sandbox Code Playgroud)

  • 缺少`num`变量 (4认同)
  • 您必须将变量“num”替换为“n”才能使该脚本正常工作。 (2认同)