2017-04-19 116 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 - 问题在我回答后被编辑。 –

相关问题