【问题标题】:How to convert a hexadecimal character array into string in C++?如何在 C++ 中将十六进制字符数组转换为字符串?
【发布时间】: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


【解决方案1】:

以下代码应该可以满足您的需要。

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

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

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2013-02-07
    • 2014-03-19
    • 2021-04-28
    相关资源
    最近更新 更多