首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言將十六進制字符串 "2A" 轉換為 0x2A

     編輯:程式設計綜合問答

轉換邏輯

逐字符解析:

  • '0'~'9' → c - '0'
  • 'A'~'F' → c - 'A' + 10
  • 'a'~'f' → c - 'a' + 10

累加:result = result * 16 + digit。

代碼實現

int hexStrToInt(const char *s) {
    int val = 0;
    while (*s) {
        char c = *s++;
        int digit;
        if (c >= '0' && c <= '9') digit = c - '0';
        else if (c >= 'A' && c <= 'F') digit = c - 'A' + 10;
        else if (c >= 'a' && c <= 'f') digit = c - 'a' + 10;
        else break; // 非法字符停止
        val = val * 16 + digit;
    }
    return val;
}
// 調用:hexStrToInt("2A") 返回 42 (0x2A)

標準庫替代

  • strtol("2A", NULL, 16)(C 標準庫,支持前綴 0x、錯誤檢查)。
  • sscanf(str, "%x", &val)。

推薦直接用 strtol,健壯且標準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved