【发布时间】:2019-02-28 04:59:22
【问题描述】:
我正在尝试将 16 位有符号整数的二进制数写入文件。我搜索了很多,当然我发现了许多将整数变量转换为二进制的示例。但在我的情况下,这些函数效率不高,因为我需要转换 50e6 个样本/秒。调用一个函数来转换每个样本需要大量的计算时间。
所以我想做的是:
int array[] = {233, 431, 1024, ...}
for (i = 0; i < sizeof(array); i++){
fprintf(outfile, "%any_binary_format \n", array[i]);
}
文件中的结果应该是:
0000000011101001
0000000110101111
0000010000000000
【问题讨论】:
-
这种格式不存在。您必须编写自己的函数。
-
没有标准的说明符来实现这一点。你必须自己写。
-
当你说你要写16位
0000000011101001时,你想写成16字节、4字节还是2字节? (我猜是 2,但前面三个 cmets 都假定为 16。) -
不清楚你是否理解二进制文件和ASCII字符串
'1'和'0'数字之间的区别。您的“文件中的结果应该是”不明确。如果性能问题,您需要二进制 - 即每个样本 2 个字节,而不是 16 个 ASCII 数字和换行符。这可能是您的意思,但正如@SteveSummit 所指出的那样,其他人并没有以这种方式解释它。 -
在您的循环中,您很可能会越界访问
array。