字符文本文件到二进制文本文件
本文关键字:文本 文件 二进制 字符 | 更新日期: 2023-09-27 18:11:02
我有一个包含一组记录的文本文件,我试图将其转换并保存为1和0 ..每次我使用
Byte [] arr=Encoding.UTF8.GetBytes(recordss) ;
并使用字节写入器写入,我仍然有相同的记录文件,没有区别。
所以我的问题是有一种方法将字符串转换为二进制并将其写入二进制格式的文件。顺便说一下,我正在使用c#
这是我到目前为止的代码
public static void serialData()
{
FileStream recFile = new FileStream("Records.txt", FileMode.Open, FileAccess.ReadWrite); //file to be used for records
StreamReader recordRead = new StreamReader(recFile);
String recordss = recordRead.ReadToEnd(); //Reads Record file
recordRead.Close();
recFile.Close();
Byte [] arr=Encoding.UTF8.GetBytes(recordss) ;
FileStream file = new FileStream("Temp.txt", FileMode.Create, FileAccess.Write);
StreamWriter binfile = new StreamWriter(file);
for(int i =0; i < arr.Count();i++)
binfile.WriteLine(arr[i]);
binfile.Close();
file.Close();
}
有一个内置函数可以将整型值转换为二进制表示的字符串。尝试替换
行binfile.WriteLine(arr[i]);
这一行
binfile.WriteLine(
Convert.ToString(arr[i], 2)
);
Convert.ToString()
将把输入转换成给定基数的表示形式。在本例中,选择2
作为二进制表示的基数。其他常用的值是8
表示八进制,或者16
表示十六进制。
您的结果是'字节'格式。总是这样。根据定义,它是数据。你"看到"它的方式取决于你打开它时使用的软件。
你想要的可能是一个文件,当在文本编辑器中打开时,"显示"原始数据源的底层二进制数据:作为文本。为此,您必须在文件中写入字符'0'和'1'。因此,最终文件将比原始数据源大得多。
修改代码:
for(int i =0; i < arr.Count();i++)
binfile.WriteLine(arr[i]);
这:
foreach (byte b in arr)
{
binfile.Write((b >> 7 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 6 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 5 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 4 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 3 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 2 & 1) == 0 ? '0' : '1');
binfile.Write((b >> 1 & 1) == 0 ? '0' : '1');
binfile.Write((b & 1) == 0 ? '0' : '1');
}
但是它有点丑。最好使用十六进制文件查看器