以下で使用しているのと同じエンディアンでバイトをintに変換できるQt関数を見つけようとしています。私は間違いなくここで車輪の再発明をしているように感じます、そしてこれを行うためにQtライブラリに何かがすでにあるに違いありません。それは存在しますか?
// TODO: qt must have a built in way of converting bytes to int.
int IpcReader::bytesToInt(const char *buffer, int size)
{
if (size == 2) {
return
(((unsigned char)buffer[0]) << 8) +
(unsigned char)buffer[1];
}
else if (size == 4) {
return
(((unsigned char)buffer[0]) << 24) +
(((unsigned char)buffer[1]) << 16) +
(((unsigned char)buffer[2]) << 8) +
(unsigned char)buffer[3];
}
else {
// TODO: other sizes, if needed.
return 0;
}
}
// TODO: qt must have a built in way of converting int to bytes.
void IpcClient::intToBytes(int value, char *buffer, int size)
{
if (size == 2) {
buffer[0] = (value >> 8) & 0xff;
buffer[1] = value & 0xff;
}
else {
// TODO: other sizes, if needed.
}
}
編集:データは常にビッグエンディアンであるため(OSに関係なく)、たとえば101は[0、0、0、101]になり、78000は[0、1、48、176]になります。