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

时间:2017-04-19 07:16:45

标签: 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,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 个答案:

答案 0 :(得分:1)

以下代码可以满足您的需求。

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

使用std :: string构造函数,该构造函数也取长度又称字节数。