我正在将字符串转换为常量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 ++等效的文件。有人可以协助吗?
谢谢
答案 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);