c# - BinaryWriter 写出有趣的字符
问题描述
下面是代码:
using (FileStream fs = File.Create("data.txt"))
using (BinaryWriter bw = new BinaryWriter(fs))
{
int num = 2019;
bw.Write(num);
}
当我用编辑器打开 data.txt 时,我只看到一个有趣的字符。所以我的问题是:
Q1-这是因为我的编辑器的编码是 UTF-8 与 BinaryWriter 格式不兼容吗?我应该使用哪种编码方案才能在文本文件中看到 2019 年法案?
Q2-BinaryWriter 相对于其他流适配器(如 StreamWriter)的实际用途是什么?对我来说 BinaryWriter 做了一些奇怪的事情,例如,你使用 BinaryWriter 先写一个 int,然后写一个字符串......,然后当你用 BinaryReader 读取文件时,你必须做 ReadInt32() 然后 ReadString( ),你不能弄乱序列,如果你做 ReadString(),你会得到一个有趣的角色。但是谁会“记住”或知道要阅读的序列?
解决方案
这都是文件格式的问题。
当您使用 StreamWriter 时,您的输出将是可读的文本,这意味着您可以在编辑器中看到里面的内容。例如,您可以编写一个 bool"true"
或"false"
使用二进制编写器时,该值存储在其二进制表示形式中,对于布尔值,该表示形式为 0 或 1。请注意,"0"
如果您愿意,可以在文本文件中写入 true。
在记住里面的内容时,要么使用自我描述的文件格式,例如带有标题的 csv,要么必须使用标准格式(例如 MP3,您可以在网上找到描述),或者您必须同时编写 reader 和 writer 以确保它们匹配(即使是文本格式)。
例如,通过查看"0,0"
您无法判断它的两个布尔值是用逗号分隔还是法语格式的数字 0 具有一位精度。
推荐阅读
- reactjs - React Route 渲染条件
- java - 更改 Spring openapi-generator-maven-plugin 生成的接口的返回类型
- javascript - 使用javascript解构重新分配变量的值
- ffmpeg - ffmpeg - 如何在给定帧列表的视频中制作视频?
- asp.net - ASP.NET - ajax 调用返回响应但未显示在表中
- .net - 实体框架如何在同一张表中设置外键为主键
- java - 删除 Firebase 数据库的值后应用程序崩溃
- javascript - 如何以角度更改json响应格式
- c++ - 为什么通过派生类使用 :: -operator 对基类的引用不明确?
- c# - 表意空间编码