我有一个 8 字节的数组,我正在尝试将其转换为 C++ 中的有符号长整数,但似乎无法弄清楚。据我所知,long ints 只有 4 个字节,有人可以提供一些相关信息吗?它是 32 位还是 64 位重要吗?
最佳答案
您可能应该使用 int64_t
保证长度为 8 个字节。
您没有说明数据在数组中的表示方式(字节顺序),但您可以使用 reinterpret_cast<>
甚至更好:使用移位操作来“构建”您的整数。
类似于:
unsigned char array[8] = { /* Some values here */ };
uint64_t value =
static_cast<uint64_t>(array[0]) |
static_cast<uint64_t>(array[1]) << 8 |
static_cast<uint64_t>(array[2]) << 16 |
static_cast<uint64_t>(array[3]) << 24 |
static_cast<uint64_t>(array[4]) << 32 |
static_cast<uint64_t>(array[5]) << 40 |
static_cast<uint64_t>(array[6]) << 48 |
static_cast<uint64_t>(array[7]) << 56;
关于c++ - 在 C++ 中将 8 字节数组转换为有符号长整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142251/