2017-04-19 52 views
0

このデータパケットは、TCP/IPプロトコルを使用してデバイスに送信します。私の配列は:C++で16進文字配列を文字列に変換する方法は?

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

私はこれを文字列に変換します。どうすればいいのですか?

今私は手動で10進数を下に書いています:

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コンストラクターを使用します。このコンストラクターには、別の長さのバイトも使用されます。

+1

@VTT - 質問は私の答えの後に編集されました。 –

関連する問題