在c++中将二进制Char数组转换为整数和双精度数组

Convert binary Char array to integer and double arrays in C++

本文关键字:数组 转换 双精度 整数 Char c++ 二进制      更新时间:2023-10-16

我有一个包含二进制格式的数字的字符数组。数字的格式有:整型、整型和双精度型。什么是最好的和最快的方式来转换字符数组到整数数组和双数组在c++ ?现在我正在使用下面的代码,它的工作很好,但我认为它是不够有效!

#define SIZE    5000
char chBuf[SIZE];  // contains double numbers in binary format
char dBuf[sizeof(double)];
char IBuf[sizeof(int)];
int count =0;
for (int i=0; i<numberofdata; i++) 
{       
   for (int j=0; j<4; j++)  IBuf[j] = chBuf[j + count];
   Integer[i] =  *(integer*) (IBuf);
   count += sizeof(integer);
   for (int j=0; j<4; j++)  IBuf[j] = chBuf[j + count];
   Integer[i+1] =  *(integer*) (IBuf);
   count += sizeof(integer);
   for (int j=0; j<8; j++)  dBuf[j] = chBuf[j + count];  
   Double[i] =  *(double*) (dBuf);
   count += sizeof(double);
}  

我认为复制部分的dBuf[]和IBuf[]不应该是必要的,但我不知道如何摆脱他们。

无需将数据复制到单独的缓冲区。另外,您需要注意不要覆盖您的Integer值。

int s = 2 * sizeof(int) + sizeof(double);
for (int i = 0; i < numberofdata; i++) {       
   Integer[2 * i] =  *(int*) (chBuf + s * i);
   Integer[2 * i + 1] =  *(int*) (chBuf + s * i + sizeof(int));
   Double[i] =  *(double*) (chBuf + s * i + 2 * sizeof(int));
}