C#字节数组为字符串,反之亦然

tpa*_*ale 4 c#

我有一些C++代码通过STL字符串和文本i/o将字节值保存到文件中,并且对如何在C#中执行此操作感到困惑.

首先,我将字节数组转换为字符串并将每个数组存储为文本文件中的一行:

 StreamWriter F
 loop
 {
   byte[] B;       // array of byte values from 0-255 (but never LF,CR or EOF)
   string S = B;   // I'd like to do this assignment in C# (encoding? ugh.) (*)
   F.WriteLine(S); // and store the byte values into a text file
 }
Run Code Online (Sandbox Code Playgroud)

稍后...我想反转步骤并取回原始字节值:

  StreamReader F;   
  loop
  {
    string S = F.ReadLine();   // read that line back from the file
    byte[] B = S;              // I'd like to convert back to byte array (*)
  }
Run Code Online (Sandbox Code Playgroud)

你是如何做这些作业的(*)?

cuo*_*gle 5

class Encoding支持你需要的,下面的例子假设你需要转换stringbyte[]using UTF8,反之亦然:

string S = Encoding.UTF8.GetString(B);
byte[] B = Encoding.UTF8.GetBytes(S);
Run Code Online (Sandbox Code Playgroud)

如果您需要使用其他编码,您可以轻松更改:

Encoding.Unicode
Encoding.ASCII
...
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,`System.String`将其数据存储在`UTF-16`中作为"基本格式".您可以使用正确的`编码'将该格式转换为任何其他格式的字节,如您在答案中所示.:] (2认同)