C Programming: Convert Hex Int to Char*

后端 未结 4 1669
借酒劲吻你
借酒劲吻你 2020-12-21 05:55

My question is how I would go about converting something like:

    int i = 0x11111111;

to a character pointer? I tried using the itoa() fun

相关标签:
4条回答
  • 2020-12-21 06:40
    char buffer[20];
    

    Then:

    sprintf(buffer, "%x", i);
    

    Or:

    itoa(i, buffer, 16);
    

    Character pointer to buffer can be buffer itself (but it is const) or other variable:

    char *p = buffer;
    
    0 讨论(0)
  • 2020-12-21 06:46

    Using the sprintf() function to convert an integer to hexadecimal should accomplish your task.

    Here is an example:

    int i = 0x11111111;
    
    char szHexPrintBuf[10];
    
    int ret_code = 0;
    
    ret_code = sprintf(szHexPrintBuf, "%x", i);
    
    if(0 > ret_code)
    { 
       something-bad-happend();
    }
    
    0 讨论(0)
  • 2020-12-21 06:47

    Using the sprintf() function like this -- sprintf(charBuffer, "%x", i); -- I think will work very well.

    0 讨论(0)
  • 2020-12-21 06:56

    itoa is non-standard. Stay away.

    One possibility is to use sprintf and the proper format specifier for hexa i.e. x and do:

    char str[ BIG_ENOUGH + 1 ];
    sprintf(str,"%x",value);
    

    However, the problem with this computing the size of the value array. You have to do with some guesses and FAQ 12.21 is a good starting point.

    The number of characters required to represent a number in any base b can be approximated by the following formula:

    ⌈logb(n + 1)⌉

    Add a couple more to hold the 0x, if need be, and then your BIG_ENOUGH is ready.

    0 讨论(0)
提交回复
热议问题