-3

这是我的代码:

{    
FileStream hd = new FileStream(path, FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(hd);
bw.Write("Tien an uong:");
bw.Write(anuong); //double
bw.Write("\n");
bw.Write("Tien hat:");
bw.Write(hat);//double
bw.Write("\n");
bw.Write("Tong cong tien phai thanh toan:");
bw.Write(s);//double
bw.Close();
hd.Close();
}

这就是输出文件得到的: Tien an uong: jè@ Tien hat: ùA Tong cong tien phai thanh toan: @A

我需要你帮忙!

4

3 回答 3

4
BinaryWriter bw = new BinaryWriter(hd);

二进制 - 不是文本。

bw.Write(hat); //double

愉快地写出double作为字节的字节 - 而不是作为文本。

我建议您使用 a TextWriter,而不是 a BinaryWriter

于 2012-12-16T11:31:02.573 回答
0

如果我理解您的问题,那么您遇到了双精度问题,所以我假设一个简单的方法ToString()可以解决您的问题,但您似乎只是希望它作为一个字符串,那么如何:

{    
FileStream hd = new FileStream(path, FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(hd);
bw.Write(string.Format(@"Tien an uong:{0}{1}Tien hat:{2}{1}Tong cong tien phai thanh toan:{3}", anuong, Environment.NewLinew, hat, s);
bw.Close();
hd.Close();
}
于 2012-12-16T11:38:26.663 回答
0

二进制 writer 的默认编码是 UTF-8(与 ascii 兼容),写入 doubles 会直接将 doubles 作为 byes 写入流,从而导致意外字符。

您应该使用带有您选择的编码的流编写
器 http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx

或者坚持使用 BinaryWriter 的 write 函数,该函数接受一个字符串并以 UTF-8 编码。一切都很难,这似乎不太合乎逻辑。

于 2012-12-16T11:38:30.393 回答