我有这样的功能
void UnitTestWorker::constructTestPayload(QByteArray &payload)
{
QString List = "127.0.0.1";
unsigned short Port = 12344;
unsigned int RequestId = 1;
memcpy(payload.data(),reinterpret_cast<char*>Port,sizeof(Port));
memcpy(payload.data()+sizeof(Port),reinterpret_cast<char*>RequestId ,sizeof(RequestId ));
}
但是我遇到了访问冲突错误,似乎我无法执行类似 reinterpret_cast<char*>Port
的操作或 reinterpret_cast<char*>RequestId
.
最佳答案
你必须确保 QByteArray &payload
有足够的大小来接收你字节复制到它的数据:
if (payload.size()<sizeof(Port)+sizeof(RequestId))
throw exception ("Ouch !! payload too small");
memcpy(payload.data(),reinterpret_cast<char*>(&Port),sizeof(Port));
memcpy(payload.data()+sizeof(Port),reinterpret_cast<char*>(&RequestId) ,sizeof(RequestId ));
关于c++ - 将 unsigned short/int 转换为 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755644/