簡體   English   中英

在不使用庫函數的情況下將 C 中的 ASCII 數字轉換為十六進制數字

[英]Converting an ASCII number to a Hex number in C without using library functions

我想將 32 位 ASCII 數字(例如“FE257469”)轉換為等效的 32 位十六進制數字,該數字將存儲在 32 位變量中。 最重要的是,我想在使用任何庫 function (如 sscanf()、atoi() 等)的情況下做到這一點。

有什么想法嗎?

預先感謝。

通常的方式是這樣的:

將結果初始化為 0

  1. 將輸入的一位數字轉換為十進制以獲取當前數字
  2. 結果乘以 16
  3. 將當前數字添加到結果
  4. 對剩余的數字重復步驟 1-3

這是一個基於開關的 function 的實現:

unsigned int parseHex( char *str )
{
    unsigned int value = 0;

    for(;; ++str ) switch( *str )
    {
        case '0': case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8': case '9':
            value = value << 4 | *str & 0xf;
            break;
        case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
        case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
            value = value << 4 | 9 + *str & 0xf;
            break;
        default:
            return value;
    }
}

暫無
暫無

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

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