views:

477

answers:

2

I don't really care about encoding and stuff, as long as I get back the exact same byte array.

So to sum up: How do I convert a byte array into a string, and then that string back into the same byte array I started with?

+8  A: 

The absolute safest way to convert bytes to a string and back is to use base64:

string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);

That way you're guaranteed not to get "invalid" unicode sequences such as the first half of a surrogate pair without the second half. Nothing's going to decide to normalize the data into something strange (it's all ASCII). There's no chance of using code points which aren't registered in Unicode, or anything like that. Oh, and you can cut and paste without much fear, too.

Yes, you end up with 4 characters for every 3 bytes - but that's a small price to pay for the knowledge that your data won't be corrupted.

Jon Skeet
This post should replace the above as the answer. :)
280Z28
Done. Didn't see the note at first. Very important! Thanks, once again Jon Skeet =)
Svish
+1  A: 

You can use Convert.ToBase64 documentation http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

Aragorn