簡體   English   中英

將 int 數字轉換為十六進制字符 - C 編程

[英]Converting int digit into hex char - C programming

這是我將int最多 15 轉換為 hex char

static char intToHex(int i)
{
    switch (i)
    {
    case 0:
        return '0';
    case 1:
        return '1';
    case 2:
        return '2';
    case 3:
        return '3';
    case 4:
        return '4';
    case 5:
        return '5';
    case 6:
        return '6';
    case 7:
        return '7';
    case 8:
        return '8';
    case 9:
        return '9';
    case 10:
        return 'a';
    case 11:
        return 'b';
    case 12:
        return 'c';
    case 13:
        return 'd';
    case 14:
        return 'e';
    case 15:
        return 'f';
    default:
        break;
    }
}

有沒有辦法在沒有這么多開關盒的情況下寫得更好?

我試過的:

char * returnHex(int i) {

    char * hex = malloc(5);

    sprintf(hex, "%x", i);
    puts(hex);

    return hex; 
}

但這會返回一個字符數組,而不是我需要的char 謝謝!

其它的辦法:

char intToHex(int i)
{
    return (i < 10) : '0' + i : 'a' + i - 10;
}

只需聲明一個字符數組,如

const char hex[] = "0123456789abcdef";

並使用

if ( i < sizeof( hex ) - 1 )
{
    return hex[i];
}
else
{
    return hex[0];  // or ant other value
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM