将无符号short/int强制转换为char*

Cast an unsigned short/int to char *

本文关键字:转换 char 无符号 short int      更新时间:2023-10-16

我有一个类似的函数

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*>Portreinterpret_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 ));