这个问题在这里已经有了答案:How to convert UTF-8 byte[] to string (16 answers) 8年前关闭。
我创建了一个包含两个字符串的字节数组。如何将字节数组转换为字符串?
var binWriter = new BinaryWriter(new MemoryStream());
binWriter.Write("value1");
binWriter.Write("value2");
binWriter.Seek(0, SeekOrigin.Begin);
byte[] result = reader.ReadBytes((int)binWriter.BaseStream.Length);
我想将 result
转换为字符串。我可以使用 BinaryReader
,但我不能使用 BinaryReader
(不支持)。
new String(result)
根据您希望使用的编码:
var str = System.Text.Encoding.Default.GetString(result);
假设您使用的是 UTF-8 编码:
string convert = "This is the string to be converted";
// From string to byte array
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(convert);
// From byte array to string
string s = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);
System.Text.Encoding.UTF8.GetString(buffer);
相比,System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);
有什么优点?
BitConverter.ToString(byteArray))
docs.microsoft.com/en-us/dotnet/api/…
您可以使用 BlockCopy 来完成此操作,而无需处理编码:
char[] chars = new char[bytes.Length / sizeof(char)];
System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
string str = new string(chars);
bytes.Length / sizeof(char)
上使用 Math.Ceiling
,那么它将始终正常工作。
要将 byte[] 转换为 string[],只需使用以下行。
byte[] fileData; // Some byte array
//Convert byte[] to string[]
var table = (Encoding.Default.GetString(
fileData,
0,
fileData.Length - 1)).Split(new string[] { "\r\n", "\r", "\n" },
StringSplitOptions.None);
不定期副业成功案例分享
System.Text.Encoding.Default
是系统的当前 ANSI 代码页 - 结果会因操作系统的配置方式而异。如果您知道字符串的真正编码是什么,则应该改用那个编码。