您不需要“将标准输出更改为二进制”,只需向其输出二进制即可。这肯定会混淆例如连接到该流的终端仿真器,但这是意料之中的。
fscanf()读取每个整数的普通循环,然后是将fwrite()其写出的循环应该可以工作。不过要注意字节序问题,您可能希望单独输出每个字节。
在Perl中,您可以尝试:
perl -ne 'chomp; print pack 'i', $_;'
Run Code Online (Sandbox Code Playgroud)
这将为您提供至少32位的主机本机有符号整数,但可能更多取决于您的本地C编译器.
打包的其他选项可以代替'i',例如'l',它将给你一个签名长,应该是32位.还有更多的小端或大端选项.
有关完整说明,请参阅http://perldoc.perl.org/functions/pack.html.
这是你在C中的解决方案,如果你想以无聊的方式做到这一点. :)
#include <stdio.h>
int main () {
int x;
while (fscanf(stdin, "%i", &x)) {
fwrite(&x, sizeof(x), 1, stdout);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7346 次 |
| 最近记录: |