我有一个字节[]数组,从一个文件加载,我碰巧知道包含UTF-8。
在一些调试代码中,我需要将其转换为字符串。是否有一个单行程序可以做到这一点?
在表面之下,它应该只是一个分配和一个memcopy,所以即使没有实现,也应该是可能的。
我有一个字节[]数组,从一个文件加载,我碰巧知道包含UTF-8。
在一些调试代码中,我需要将其转换为字符串。是否有一个单行程序可以做到这一点?
在表面之下,它应该只是一个分配和一个memcopy,所以即使没有实现,也应该是可能的。
当前回答
BitConverter类可用于将字节[]转换为字符串。
var convertedString = BitConverter.ToString(byteAttay);
BitConverter类的文档可以在MSDN上打印。
其他回答
定义:
public static string ConvertByteToString(this byte[] source)
{
return source != null ? System.Text.Encoding.UTF8.GetString(source) : null;
}
使用:
string result = input.ConvertByteToString();
当你不知道编码时,从字节数组转换到字符串的一般解决方案:
static string BytesToStringConverted(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
using (var streamReader = new StreamReader(stream))
{
return streamReader.ReadToEnd();
}
}
}
我在这篇文章中看到了一些答案,这可能被认为是完整的基础知识,因为我在c#编程中有几种方法来解决相同的问题。唯一需要考虑的是纯UTF-8和带有BOM的UTF-8之间的区别。
Last week, at my job, I needed to develop one functionality that outputs CSV files with a BOM and other CSV files with pure UTF-8 (without a BOM). Each CSV file encoding type will be consumed by different non-standardized APIs. One API reads UTF-8 with a BOM and the other API reads without a BOM. I needed to research the references about this concept, reading the "What's the difference between UTF-8 and UTF-8 without BOM?" Stack Overflow question, and the Wikipedia article "Byte order mark" to build my approach.
最后,我的c#编程的UTF-8编码类型(BOM和纯)需要类似于下面的例子:
// For UTF-8 with BOM, equals shared by Zanoni (at top)
string result = System.Text.Encoding.UTF8.GetString(byteArray);
//for Pure UTF-8 (without B.O.M.)
string result = (new UTF8Encoding(false)).GetString(byteArray);
还有一个类UnicodeEncoding,使用起来非常简单:
ByteConverter = new UnicodeEncoding();
string stringDataForEncoding = "My Secret Data!";
byte[] dataEncoded = ByteConverter.GetBytes(stringDataForEncoding);
Console.WriteLine("Data after decoding: {0}", ByteConverter.GetString(dataEncoded));
BitConverter类可用于将字节[]转换为字符串。
var convertedString = BitConverter.ToString(byteAttay);
BitConverter类的文档可以在MSDN上打印。