我有以下代码:
using (BinaryReader br = new BinaryReader(
File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
int pos = 0;
int length = (int) br.BaseStream.Length;
while (pos < length)
{
b[pos] = br.ReadByte();
pos++;
}
pos = 0;
while (pos < length)
{
Console.WriteLine(Convert.ToString(b[pos]));
pos++;
}
}
FILE_PATH 是一个 const 字符串,其中包含正在读取的二进制文件的路径。二进制文件是整数和字符的混合体。每个整数为 1 个字节,每个字符以 2 个字节写入文件。
例如,该文件具有以下数据:
1你好,你好吗45你看起来很棒//等等
请注意:每个整数都与它后面的字符串相关联。所以 1 与“HELLO HOW ARE YOU”相关联,45 与“YOU ARE LOOKING GREAT”相关联,以此类推。
现在写入二进制文件(我不知道为什么,但我必须忍受这个),这样“1”将只占用 1 个字节,而“H”(和其他字符)每个占用 2 个字节。
所以这是文件实际包含的内容:
0100480045..等等以下是细分:
01 是整数 1 的第一个字节 0048 是 'H' 的 2 个字节(H 是 48 十六进制) 0045 是 'E' 的 2 个字节(E = 0x45)
等等..我希望我的控制台从这个文件中打印出人类可读的格式:我希望它打印“1 HELLO HOW ARE YOU”然后“45 YOU ARE LOOKING GREAT”等等......
我在做什么正确吗?有没有更简单/有效的方法?我的线 Console.WriteLine(Convert.ToString(b[pos])); 除了打印整数值而不是我想要的实际字符之外什么都不做。文件中的整数可以,但是如何读出字符?
任何帮助将非常感激。谢谢