将字节数组转换为数字字符串[c#]

将字节数组转换为数字字符串[c#],c#,string,bytearray,C#,String,Bytearray,我需要帮助将数字从字节数组转换为C#中的字符串 这是我的代码: string Astr = "123456789"; byte[] AByte = Astr.Select(c => (byte)(c - '0')).ToArray(); Astr = AByte.ToString(); // This is problem - I need convert numbers back to string 感谢您的想法:)一种合理有效的方法是使用接受字符数组的String构造函数。然后您只

我需要帮助将数字从字节数组转换为C#中的字符串

这是我的代码:

string Astr = "123456789";
byte[] AByte = Astr.Select(c => (byte)(c - '0')).ToArray(); 
Astr = AByte.ToString(); // This is problem - I need convert numbers back to string

感谢您的想法:)

一种合理有效的方法是使用接受字符数组的
String
构造函数。然后您只需使用
选择
将值映射到原始字符值,然后调用
ToArray()

建议在循环中使用StringBuilder可能会稍微快一点,但是,我认为这不值得,除非你知道你有一个瓶颈。

这个呢

Astr = new String(AByte.Select (b=>(Char)(b+ 48)).ToArray())
在.NET4.0(2010)中使用的是新的


仅当数组中的所有值都在
(字节)0
(字节)9
范围内时,此操作才有效。正如注释中指出的,将创建九个字符串实例。但是,没有使用lambda(匿名函数)或中间数组。

没有使用IEnumerableArgh的字符串构造函数,他们没有添加它吗?;-)修正了答案。向下投票。这将创建一个额外的冗余阵列。它比9个冗余字符串要好。但不要对你的答案投反对票。嗯,你对我答案中的字符串的看法是对的。但是,我避免了9次添加,一个lambda和一个额外的数组。您需要考虑原始代码的
c-“0”
。此外,我认为Concat将在每个字符上调用tostring,从而在它们连接在一起之前生成9个单独的字符串实例。
Astr = new String(AByte.Select (b=>(Char)(b+ 48)).ToArray())
var answer = string.Concat(AByte);