[英]How to convert a C binary buffer to it’s hex representation in Python string?
[英]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.