在C ++中将Char转换为字节数组

时间:2018-07-07 11:10:50

标签: c++ byte

我正在将字符串转换为常量char,以准备通过套接字连接将其发送:

std::ostringstream oss1;
std::ostringstream oss2;

int code = 52;

oss1 << "4" << "1" << "0" << "0" << "0" << "0" << 224 + code / 16 << code % 16;

std::string var1 = oss1.str();

cout << var1.c_str() << '\n';

int msg_len3 = strlen(var1.c_str());

comm_send1 = send(sock, var1.c_str(), msg_len3, 0);

但是,我需要这样的输出以字节为单位:

将常量字符转换为:

4100002274

对此:

b'\x04\x01\x00\x00\x00\x00\xe3\x01'

在我要翻译的Python 3中,我只会使用:

bytevar = bytes(stringvar)

...但是,我正在努力寻找与我刚接触的C ++等效的文件。有人可以协助吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您链接到的Python代码所做的事情与尝试的C ++代码完全不同。首先,它使用 list 作为bytes函数的参数,而不是字符串。

与之最接近的C ++结构确实是std::vector<uint8_t>,例如

std::vector<uint8_t> data1 = { 4, 1, 0, 0, 0, 0, static_cast<uint8_t>(224 + code / 16), static_cast<uint8_t>(code % 16) };

您可以通过将指针传递到通常由data函数获得的第一个元素来通过套接字(或其他按字节通信通道)发送此数据:

send(sock, data1.data(), data1.size(), 0);