c++ - 在 C++ 中将 8 字节数组转换为有符号长整数

标签 c++ byte long-integer

我有一个 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/

相关文章:

c++ - 基于 MSVC 10 范围的 for 循环

python - 将 CSV 文件分割成相等的部分?

bluetooth - _serial_.bufferUntil(byte) 有什么作用,它如何与serialEvent 协同作用?

c++ - 串行通信 : Sending data from C++ to Arduino

c++ - 使用指针调用成员函数时面临错误

c - 通过循环取电(不使用 pow() 函数)

java - 为什么 long 在 Java 中被转换为 double?

c - 长整数算术中的歧义?

c++ - 模板参数列表短路?

java - 字符串到字节数组的转换因windows和ubuntu而异