【发布时间】:2017-09-15 06:51:33
【问题描述】:
所以我有这个数据包,我想使用 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 个字节不会改变?其余部分有什么变化?
【问题讨论】:
-
请注意,
'0x00'并不是真正的单个“字符”,它是一个多字节字符文字。也许你的意思是例如unsigned char array1[] = {0x00, 0x84, ... };? 没有引号? -
没有引号,它会抛出无符号类型的警告。
-
为什么你想要它作为
std::string?我不太确定这是“正确”的数据类型... -
因为我继承的类具有通过 tcp 网络发送此数据包的功能。该函数仅支持字符串。因此我需要将我的数据转换成字符串。
-
@ArunavaNag 这个问题现在清楚多了!
标签: c++ arrays string hex type-conversion