所以我有这个数据包,我想使用 TCP/IP 协议(protocol)将它发送到我的设备。我的数组是:
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 构造函数,它也采用长度,也就是字节数。
关于c++ - C++中如何将十六进制字符数组转换成字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43488997/