我看到了这个代码示例:
using (FileStream fStream = File.Open(@"C:\myMessage.dat", FileMode.Create))
{
string msg = "Helloo";
byte[] msgAsByteArray = Encoding.Default.GetBytes(msg);
foreach (var a in msgAsByteArray)
{
Console.WriteLine($"a: {a}");
}
// Write byte[] to file.
fStream.Write(msgAsByteArray, 0, msgAsByteArray.Length);
// Reset internal position of stream.
fStream.Position = 0;
// Read the types from file and display to console.
Console.Write("Your message as an array of bytes: ");
byte[] bytesFromFile = new byte[msgAsByteArray.Length];
for (int i = 0; i < msgAsByteArray.Length; i++)
{
bytesFromFile[i] = (byte)fStream.ReadByte();
Console.Write(bytesFromFile[i]);
}
// Display decoded messages.
Console.Write("\nDecoded Message: ");
Console.WriteLine(Encoding.Default.GetString(bytesFromFile));
Console.WriteLine($“a:{a}”)的结果是:
a: 72
a: 101
a: 108
a: 108
a: 111
a: 111
1。 我认为byte []由每个字节单元组成。 但是每个字节用整数表示。 该数字必须是相应的ASCII字符。 在C#中,字节数组表示以ASCII?
表示的数据2。 文件myMessage.dat是由仅由0和1组成的二进制数据组成的吗? 但是当我用文本编辑器打开myMessage.dat时,它显示的是Helloo文本字符串。这是什么原因?
答案 0 :(得分:2)
你明确转换了&#34; Halloo&#34;使用Encoding.Default.GetBytes()
的字节数 - 有点像将其转换为ascii值,但注意系统上的默认编码。
byte[] myBytes = new [] {0,7,12,3,9,30}
放入一个文件并用你的textedit打开,那么你将得到不可读的文本作为&#34;普通文本&#34;从32开始,之前是f.e.标签,铃铛,换行符和其他特殊的不可打印字符。见f.e. NonPrintableAscii