假设我有 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/