[英]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.