QByteArray byteArray;
QDataStream dataStream(&byteArray, QIODevice::WriteOnly);
dataStream << (quint8)22;
dataStream << "test2";
qInfo() << byteArray;
结果:\x16\x00\x00\x00\x06test2\x00
为什么使用4个字节而不是1个字节?我明确地说我希望它是unsigned char
。幕后是否有一些记忆对齐?我可以把它关掉吗?
编辑:似乎只有在我写char*
时,它才会从最初开始增加3个字节。
答案 0 :(得分:2)
\x16\x00\x00\x00\x06test2\x00
\x16
你是uint8。
\x00\x00\x00\x06
是一个固定大小的字符串长度的四字节标题(显然包括null)。
然后是你的字符串,后跟一个终止空值。