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

时间:2013-04-12 21:26:42

标签: c++ c binary char type-conversion

我有一个包含二进制格式数字的char数组。数字采用以下格式:整数,整数和双精度。在C ++中将char数组转换为整数数组和双数组的最佳和最快方法是什么?现在我使用以下代码,它工作正常,但我认为它不够有效!

#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 []不是必需的,但我不知道如何摆脱它们。

1 个答案:

答案 0 :(得分:2)

无需将数据复制到单独的缓冲区。 此外,您需要注意不要覆盖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));
}