我有一个包含二进制格式数字的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 []不是必需的,但我不知道如何摆脱它们。
答案 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));
}