byte[] tagData = GetTagBytes(tagID, out tiffDataType, out numberOfComponents);
string str = Encoding.ASCII.GetString(tagData);
在Windows Phone平台上,框架不支持Encoding.ASCII.GetString()
方法。
我曾经从 Passant 的帖子 ASCIIEncoding In Windows Phone 7 获得帮助之前。但它只将 string
转换为 byte[]
,现在我需要将 byte[]
转换为 string
。
任何帮助都会很好~
最佳答案
如果您尝试了解 Hans' code有效,您将很容易想出反向转换:
public static string AsciiToString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.Length);
foreach(byte b in bytes) {
sb.Append(b<=0x7f ? (char)b : '?');
}
return sb.ToString();
}
您也可以使用 LINQ,但只有 .NET 4.0 才提供一个不错的解决方案:
string AsciiToString(byte[] bytes)
{
return string.Concat( bytes.Select(b => b <= 0x7f ? (char)b : '?') );
}
不幸的是缺少 String.Concat<T>(IEnumerable<T>)以前版本的框架中的重载迫使您使用有些丑陋且低效的:
string AsciiToString(byte[] bytes)
{
return string.Concat(
( bytes.Select(b => (b <= 0x7f ? (char)b : '?').ToString()) )
.ToArray()
);
}
关于c# - Windows Phone 平台中的 Encoding.ASCII.GetString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750850/