
[英]is there performance difference between binary and text mode while writing to a file in c?
[英]Difference between binary and text file in terms of storage?
我想问几个关于位和字节的问题,因为我很困惑。
例如,假设我有一个short int x = 345;
。 我知道short占用16位,所以当我在文件中写入short时,它将写为char'3','4','5',每个包含1个字节,总共24位。 有没有一种方法可以将文件中的数字(短整数)写为16位的短整数?
我的想法也对吗? 如果文件是二进制或文本(以字节为单位),则写入文件有什么区别?
是的,有办法。
uint16_t sh = 345;
fwrite(&sh, sizeof(sh), 1, fp);
在您提到的情况下, 345
是作为文本编写的(例如,如果使用的是ASCII,则为ASCII)。 在我发布的示例中, sh
的二进制表示形式写在文件中,它将仅占用2个字节。
如果文件是二进制或文本(以字节为单位),则写入文件有什么区别?
文字写入( fprintf
)
0000000: 00110011 00110100 00110101 3 4 5
二进制写( fwrite
)
0000000: 01011001 00000001 #Little endian. Read as: 00000001 01011001 = 345
如果互操作性是一个问题(例如,您要将文件发送到另一台计算机),则文本格式是可移植的,因此是一种上乘的选择。
如果将值写为字符串,则三个数字将至少占用三个字节; 通常还会有换行符或空格来标记值的结尾。
是的,您可以将值写为2个字节。 一种方法是:
fwrite(&x, sizeof(x), 1, fp);
二进制和文本之间的区别在于,您可以在几乎完全不受惩罚的不同类型的计算机之间传输文本,并且所有计算机都将以相同的方式解释数据。 二进制文件只能在具有相同字节序的计算机上进行解释(大字节序或非英特尔与小字节序或英特尔)。 在另一类计算机上,必须交换字节顺序才能正确解释二进制数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.