2017-04-19 114 views
0

所以我有這個數據包,我想要使用TCP/IP協議將它發送到我的設備。我的陣列是:如何在C++中將十六進制字符數組轉換爲字符串?

unsigned char array1[] = {'0x00', '0x84', '0x00', '0x00', '0x00', '0x06', '0x54', '0x01', '0x00', '0x01', '0x00', '0x03'}; 

我想要這個轉換成一個字符串。我該怎麼做?

現在我只是手動寫下十進制值:

unsigned char array1[] = {0,132,0,0,0,6,84,5,0,2,255,0}; 

並將其轉換成字符串:

std::string data (array1, array1 + sizeof array1/sizeof array1[0]); 

不過,我不知道我可以用我的十六進制數據包就像一個字符串直?

string x= "00 84 00 00 00 06 54 05 00 02 FF 00"; 

也有一種方法,我可以設計我的消息頭,這是不改變的前7個字節?該部分的其餘部分有哪些變化?

+1

請注意,'0x00'不是一個單一的「字符」,它是一個多字節字符。也許你的意思是'unsigned char array1 [] = {0x00,0x84,...};'? *沒有*引號? –

+0

沒有引號,它會針對無符號類型拋出警告。 –

+0

爲什麼你想要它作爲'std :: string'?我不太確定這是否是「正確的」數據類型... –

回答

1

下面的代碼應該做你需要的。

std::string s { "\x00\x01\x02\x03\x04", 5 }; 

使用std :: string構造函數,該構造函數也需要長度aka字節數。

+1

@VTT - 問題在我回答後被編輯。 –

相關問題