我嘗試創建一個十六進制轉義序列,它將對應於一個實際的十六進制值。轉義十六進制序列
我從來沒有真正使用十六進制轉義序列,但作爲第一次嘗試,我想創建十六進制值:0×12345678
我就如下?:
hex_value = "\x30\x78\x31\x32\x33\x34\x35\x36\x37\x38"
我找到了十六進制值:http://www.asciitable.com/
我嘗試創建一個十六進制轉義序列,它將對應於一個實際的十六進制值。轉義十六進制序列
我從來沒有真正使用十六進制轉義序列,但作爲第一次嘗試,我想創建十六進制值:0×12345678
我就如下?:
hex_value = "\x30\x78\x31\x32\x33\x34\x35\x36\x37\x38"
我找到了十六進制值:http://www.asciitable.com/
至少有兩種方法可以創建十六進制值的字符串。
char a[] = { 0x12, 0x34, 0x56, 0x78, 0 };
char *aa = "\x12\x34\x56\x78";
請注意,您在字符串中的裸露使用數量0x
和\x
。
現在,a
數組的前4個字節可能對應於32位整數值0x12345678,也可能不對應。它將在「大端」系統上實現,而不是在「小端」系統上(字節將被顛倒)。因爲在內存中如何安排多字節整數有不同的約定。甚至還有一些奇怪的系統,其中兩個單詞按照慣例排序,單詞中的兩個字節用另一個排序(我忘記了哪個系統,而我忘記了這個組合是什麼)。
如果編譯並在目標系統上運行,該程序將輸出給定整數的相應十六進制轉義序列。
#include <stdio.h>
int main() {
int i = 0x12345678;
unsigned char *p = (void *)&i;
printf("\\x%2x\\x%2x\\x%2x\\x%2x\n", p[0], p[1], p[2], p[3]);
return 0;
}
如果你想讓它成爲一個實際的字符串,不要忘記在第一個實例中終止0! – 2013-03-16 05:02:38
這就是爲什麼我寫''字符串''。但是,你可能是對的。 – 2013-03-16 05:06:02
'「\ x78 \ x56 \ x34 \ x12」'(如果小端)。 – nhahtdh 2013-03-16 04:36:17
如果它在一個字符串中,爲了將它作爲十六進制值進行處理,是否需要在其餘值之前有「0x」? – 2013-03-16 04:40:39
「0x」是編譯器識別十六進制數字序列的前綴。這裏沒有任何關係,因爲你在玩字節的時候,把它們放在一起就可以創建一個數字的表示。 – nhahtdh 2013-03-16 04:47:50