簡體   English   中英

C編程將十六進制的字符串表示形式轉換為十六進制

[英]C Programming convert String representation of Hex to Hex

我對C相當陌生。我想將十六進制數字的String表示形式轉換為實際的十六進制數字嗎?

#include <stdio.h>
int main()
    {
        char buf[8] = "410C0000";
        printf("%s\n",buf);
        return 0;
    }

我想將字符串分解成4個獨立的十六進制數字。 我可以進一步處理以進行計算:

0x41 0x0C 0x00 0x00

您可以使用sscanf ,它是scanf的變體,它從字符串而不是從stdin或文件中讀取。 格式說明符%X指定將輸入視為十六進制數, %02X另外表示要精確讀取兩位數, %02hhX另外定義將結果存儲到單個字節(即, unsigned char ,而不是可能的64位整數)值)。

該代碼如下所示:

int main()
{
    char buf[8] = "410C0000";

    unsigned char h0=0, h1=0, h2=0, h3=0;
    sscanf(buf+6, "%02hhX", &h0);
    sscanf(buf+4, "%02hhX", &h1);
    sscanf(buf+2, "%02hhX", &h2);
    sscanf(buf+0, "%02hhX", &h3);
    printf("0x%02X 0x%02X 0x%02X 0x%02X\n",h3, h2, h1, h0);
    return 0;
}

輸出:

0x41 0x0C 0x00 0x00

順便說一句: buf的大小為8-將不包含以'\\0'結尾的字符串,因此您將無法在printf使用它。 如果還想將buf用作字符串,請編寫char buf[9] ,例如,在編寫printf("%s\\n",buf)

暫無
暫無

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

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