C++ 如何在C+中将十六进制字符数组转换为字符串+;?

C++ 如何在C+中将十六进制字符数组转换为字符串+;?,c++,arrays,string,hex,type-conversion,C++,Arrays,String,Hex,Type Conversion,所以我有这个数据包,我想用TCP/IP协议将它发送到我的设备。我的阵列是: 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,

所以我有这个数据包,我想用TCP/IP协议将它发送到我的设备。我的阵列是:

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字节不变?部件的其余部分有哪些更改?

下面的代码应该满足您的需要

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

使用std::string构造函数,该构造函数也采用长度,即字节数。

请注意,
'0x00'
实际上不是单个“字符”,而是多字节字符文本。也许你的意思是,例如,
无符号字符数组1[]={0x00,0x84,…}?没有引号?如果没有引号,它会对未签名类型发出警告。为什么您希望它是
std::string
?我不确定这是否是“正确”的数据类型…因为我继承的类具有通过tcp网络发送此数据包的功能。该函数仅支持字符串。因此,我需要将数据转换成字符串。@ArunavaNag现在问题更清楚了!