Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Encoding.Default.GetBytes()方法和整数表示_C#_Encoding - Fatal编程技术网

C#Encoding.Default.GetBytes()方法和整数表示

C#Encoding.Default.GetBytes()方法和整数表示,c#,encoding,C#,Encoding,我看到了这个代码示例: 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}"); } // Writ

我看到了这个代码示例:

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));
一,。 我认为字节[]是由许多字节组成的。 但每个字节都用整数表示。 该数字必须是相应的ASCII字符。 在C#中,字节数组表示以ASCII表示的数据

二,。 文件myMessage.dat是否由仅由0和1组成的二进制数据组成? 但是当我用文本编辑器打开myMessage.dat时,它显示的是Helloo文本字符串。这是什么原因

  • 字节是一个8位整数,其值介于0到255之间。控制台的输出输出正常数字,通过提供一个格式字符串()可以输出为十六进制。您可以使用它来获得二进制表示
  • 您使用
    编码将“Halloo”显式转换为字节。Default.GetBytes()
    ——这有点像将其转换为ascii值,但注意系统上的默认编码

  • 文本编辑器解释文件的数据并尽可能显示它。如果你把一个
    byte[]myBytes=new[]{0,7,12,3,9,30}
    放入一个文件,并用文本编辑打开该文件,你将得到不可读取的文本,因为“普通文本”大约从32开始,然后是制表符、铃铛、换行符和其他特殊的不可打印字符。见f.e
  • a: 72
    a: 101
    a: 108
    a: 108
    a: 111
    a: 111