2016-10-06 3 views
1

16進数値をchar型に割り当てたいと思います。 null(\x00)文字のため、すべての16進値を割り当てることはできません。ちょうど4文字を割り当てることができます。 (char*)dataのすべての16進値を割り当てる方法ヌル終了なしで16進数値をchar型に割り当てる方法は?

unsigned char data[100]; 
sprintf((char*)data,"\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0"); 

答えて

0

、コードが複数の値を割り当てることはできません1つの割り当てを持つ配列のコードはthis good answerのように初期化できます。

ループを使用するか、memcpy()~を割り当てます。複数の値を割り当てます。

unsigned char data[100]; 
#define SOURCE_DATA ("\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0") 
#define SOURCE_SIZE (sizeof SOURCE_DATA - 1) 
memcpy(data, SOURCE_DATA, SOURCE_SIZE); 
+0

thx。私たちの問題は解決されます。そのstrlenコマンドを忘れないでください –

+0

strlenコマンドは/ 0(null)を見ます。だから問題はstrlenコマンドにも来る。 –

2

あなたは、コンパイル時に使用可能なすべてのあなたの16進数を持っているので、あなたの代わりに文字列リテラルの中括弧初期化子を使用してそれらを割り当てることができますCで

unsigned char data[] = { 
    0x30, 0x29 ,0x02, 0x01, 0x00, 0x04, 0x06, 
    0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0xa0 
}; 
関連する問題