获取 qint64 的最高有效字节
Getting most significant byte of qint64
在QT中,我有一个qint64。有没有一种简单的方法可以将其分成大小int8_t的碎片?
为了清楚起见,如果我有一个
qint64 a = [11001000 00001111 11110000 ... 11001100]
我想得到
int8_t a1=[11001000]
int8_t a2=[00001111]
int8_t a3=[11110000]
...
int8_t a8=[11001100]
这更像是一个C/C++问题,而不是Qt。但无论如何:
qint64 a = 56747234992934;
union {
qint64 i64;
int8_t i8[8];
} u = {a};
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
qDebug() << u.i8[0]; // MSB is the first byte on big endian machines
#else
qDebug() << u.i8[7]; // MSB is the last byte on little endian machines
#endif
编辑:为避免混乱的字节序特定位置代码:
qint64 a = 56747234992934;
union {
qint64 i64;
int8_t i8[8];
} u = {qToBigEndian(a)};
qDebug() << u.i8[0]; // MSB is the first byte on big endian machines
请注意,您需要包含qendian.h
才能正常工作。
int8_t a1 = a & 0xff00000000000000ll >> 56;
int8_t a2 = a & 0x00ff000000000000ll >> 48;
int8_t a3 = a & 0x0000ff0000000000ll >> 40;
int8_t a4 = a & 0x000000ff00000000ll >> 32;
int8_t a5 = a & 0x00000000ff000000ll >> 24;
int8_t a6 = a & 0x0000000000ff0000ll >> 16;
int8_t a7 = a & 0x000000000000ff00ll >> 8;
int8_t a8 = a & 0x00000000000000ffll;
确保将ll
附加到常量中,以便以 64 位整数处理它们。
这是一个破坏性的解决方案。它破坏了a
的内容,也许还会破坏粗心的代码审阅者的一些脑组织。它在美学上也很令人愉悦。
int8_t a8 = a;
int8_t a7 = a >>= 8;
int8_t a6 = a >>= 8;
int8_t a5 = a >>= 8;
int8_t a4 = a >>= 8;
int8_t a3 = a >>= 8;
int8_t a2 = a >>= 8;
int8_t a1 = a >>= 8;
一个更好的解决方案,可能在性能和可读性方面,并保留以下内容:
int8_t a8 = a;
int8_t a7 = a >> 8;
int8_t a6 = a >> 16;
int8_t a5 = a >> 24;
int8_t a4 = a >> 32;
int8_t a3 = a >> 40;
int8_t a2 = a >> 48;
int8_t a1 = a >> 56;
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 欧拉项目#8答案是大以获得有效答案
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 如何有效地对__m256i向量的字节进行重新排序(将int32_t转换为uint8_t)?
- 获取 qint64 的最高有效字节
- QFile:如何有效地读取从k到k+L的字节
- 在Windows上,从文件中删除前N个字节的最有效方法是什么
- 邪恶的字节块重新解释是否有效C++
- 最高有效字节计算
- 在c++ 11/14中有效地生成随机数据字节
- Unicode字符或多字节字符:哪种类型更有效?为什么
- 最低有效字节是什么意思
- 将两个字节转换为16位值的最有效方法
- Cuda有效地从字节数组复制到不同大小的共享内存元素
- 在内存映射文件中交换字节的有效方式
- c++有效地读取每X个字节中的前几个字节
- 为流式处理写入字节数组的最有效方法