c++ - 如何将 unsigned char 数组转换为 unsigned long long?

标签 c++ c type-conversion

假设我有 8 个 unsigned char,我想将其转换为 unsigned long long。

例如,如果所有 char 都等于 0xFF,则 unsigned long long 将等于 0xFFFFFFFFFFFFFFFF。

使用 C 或 C++ 最有效的方法是什么?

最佳答案

例如:

unsigned char buffer[8] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
unsigned long long target;
memcpy(&target, buffer, sizeof target);

请注意,如果 buffer 的所有元素并非都具有相同的值,则结果将取决于字节顺序(小端与大端)。

这还假定 unsigned long long 恰好是 8 个字节。这通常是正确的,但不能保证。 (也不能保证一个字节恰好是 8 位;它可以更多。根据定义,unsigned char 是 1 个字节。)

关于c++ - 如何将 unsigned char 数组转换为 unsigned long long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780365/

相关文章:

c++ - 在 C++ Win32 中哪个 Windows SDK 最适合我?

c++ - SPOJ - 勇敢生活线段树

c - 在c中如何实现串联和移位?

R:将数组转换为一行矩阵

c++ 序列化 std::error_code 以通过网络传输或保存到磁盘?

c++ - 在 C++ 中输出 Enum 类类型的 vector 元素

c - 如何将 ZeroMQ 套接字集成到 glib 主循环中?

c - 如果我想要一个全局 VLA,我可以在 main 函数中使用 alloca() 吗?

c - c 中整数的输入验证

java - 为什么我可以将 int 数据类型中的十进制数字添加到字符串中,而无需进行数据类型转换