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 befroe获得帮助。但它只会将string
转换为byte[]
,现在我需要将byte[]
转换为string
。
任何帮助都会很好〜
答案 0 :(得分:3)
如果您尝试了解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()
);
}
答案 1 :(得分:0)
如果你真的有ASCII(所以&lt; = 7f),你可以简单地将单个字节转换为char。
StringBuilder sb = new StringBuilder(tagData.Length);
foreach (var b in tagData)
{
sb.Append((char)b);
}
var str = sb.ToString();
我会补充说你需要的是Encoding.UTF8.GetString(tagData)
: - )
答案 2 :(得分:0)
Convert.ToBase64String方法(byte [])返回字符串
http://msdn.microsoft.com/en-us/library/dhx0d524(VS.95).aspx
我希望这有帮助!
答案 3 :(得分:0)
基于Serge - appTranslator,我创建了一个重载实现,完全模仿Silveroding的Encoding.ASCII.GetString
public static string EncodingASCIIGetString(byte[] bytes, int index, int count)
{
StringBuilder sb = new StringBuilder(count);
for(int i = index; i<(index+count); i++)
{
sb.Append(bytes[i] <= 0x7f ? (char)bytes[i] : '?');
}
return sb.ToString();
}
然而,还没试过。随意编辑