我需要幫助將字節數組中的數字轉換爲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
感謝您爲您的想法:)
我需要幫助將字節數組中的數字轉換爲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
感謝您爲您的想法:)
這個怎麼樣,
Astr = new String(AByte.Select (b=>(Char)(b+ 48)).ToArray())
相當有效的方法是使用String
構造函數,一個字符數組。然後,您只需使用Select
將您的值映射到原始字符值,然後致電ToArray()
。
string originalString = new String(AByte.Select(x => (char)(x + '0')).ToArray());
This question and answer表明,在循環中使用一個StringBuilder可能會稍快,不過,我不認爲這是值得的,除非你知道你有一個瓶頸。
var answer = string.Concat(AByte);
The overload使用在.NET 4.0(2010)新。
只有當數組中的所有值在範圍(byte)0
到(byte)9
之間時,此工作纔有效。正如在評論中指出的那樣,將創建九個字符串實例。但是,不使用lambda(匿名函數)或中間數組。
您需要考慮原始代碼的'c''0'。另外,我認爲Concat
有沒有字符串構造函數採取IEnumerable –
唉,他們沒有添加呢? ;-)修正了答案。 – driis
Downvoting。這會創建一個額外的冗餘陣列。 –