簡體   English   中英

將ASCII字符數組轉換為十六進制字符數組

[英]Convert ASCII Char Array to Hex Char Array

我正在嘗試將ASCII字符串轉換為十六進制格式的字符串,如下所示:

這是char數組:“ 0123456789ABCDEF” // Len = 16

這應該是輸出字符:“ 0x30、0x31、0x32 ...”

我正在嘗試:

unsigned char* ascii_char;
unsigned char output_char[16];

ascii_char = "0123456789ABCDEF";

int i = 0;

for (i = 0; i < 16; i++)
{    
    sprintf(output_char + i * 2, "%02X", ascii_char[i]);
}

但是所需的響應與預期不同。 因為如果我創建這樣的變量:

unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};

可以很好地工作。

unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};

與...完全相同

unsigned char output_char[] = "0123456789ABCDEF";

給定或取一個從有符號的char到無符號的char的強制轉換,以及一個可以安全忽略的尾隨零字節。

無需編寫循環,調用printf()或進行任何轉換。

您正在做的是獲取一個已存儲為十六進制的字符數組,並將其轉換為十六進制代碼的文本表示形式

在循環結束時, output_char如下所示:

"30313233343536373839414243444546"

或者,至少如果陣列足夠大以容納它,它將只是所需大小的一半。 您可以通過寫入數組末尾來調用未定義的行為

但是, ascii_char 已經采用了output_char所需的格式。 無需進行任何轉換。

暫無
暫無

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

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