2014-02-11 84 views
1

我需要幫助將字節數組中的數字轉換爲C#中的字符串。將字節數組轉換爲數字串[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 

感謝您爲您的想法:)

回答

1

這個怎麼樣,

Astr = new String(AByte.Select (b=>(Char)(b+ 48)).ToArray()) 
-1

相當有效的方法是使用String構造函數,一個字符數組。然後,您只需使用Select將您的值映射到原始字符值,然後致電ToArray()

string originalString = new String(AByte.Select(x => (char)(x + '0')).ToArray()); 

This question and answer表明,在循環中使用一個StringBuilder可能會稍快,不過,我不認爲這是值得的,除非你知道你有一個瓶頸。

+0

有沒有字符串構造函數採取IEnumerable –

+0

唉,他們沒有添加呢? ;-)修正了答案。 – driis

+0

Downvoting。這會創建一個額外的冗餘陣列。 –

0
var answer = string.Concat(AByte); 

The overload使用在.NET 4.0(2010)新。

只有當數組中的所有值在範圍(byte)0(byte)9之間時,此工作纔有效。正如在評論中指出的那樣,將創建九個字符串實例。但是,不使用lambda(匿名函數)或中間數組。

+0

您需要考慮原始代碼的'c''0'。另外,我認爲Concat 將在每個字符上調用tostring,從而在將它們連接在一起之前創建9個單獨的字符串實例。 – driis

相關問題