How can I safely convert a byte array into a string and back?
本问题已经有最佳答案,请猛点这里访问。
我真的不在乎编码和东西,只要我得到完全相同的字节数组。
总结一下:如何将字节数组转换成字符串,然后将该字符串转换回我开始使用的相同字节数组?
将字节转换为字符串并返回的最安全的方法是使用base64:
1 2 | string base64 = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64String(base64); |
这样就保证不会得到"无效"的Unicode序列,比如没有后半部分的代理项对的前半部分。没有什么可以决定将数据规范化为奇怪的东西(它都是ASCII)。没有机会使用没有用Unicode注册的代码点,或者类似的代码点。哦,你也可以不用太害怕地剪切和粘贴。
是的,每3个字节就有4个字符,但这对于您的数据不会被破坏的知识来说是一个很小的代价。
您可以使用下面的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /// <summary> /// Converts a string to byte array /// </summary> /// <param name="input">The string</param> /// <returns>The byte array</returns> public static byte[] ConvertToByteArray(string input) { return input.Select(Convert.ToByte).ToArray(); } /// <summary> /// Converts a byte array to a string /// </summary> /// <param name="bytes">the byte array</param> /// <returns>The string</returns> public static string ConvertToString(byte[] bytes) { return new string(bytes.Select(Convert.ToChar).ToArray()); } /// <summary> /// Converts a byte array to a string /// </summary> /// <param name="bytes">the byte array</param> /// <returns>The string</returns> public static string ConvertToBase64String(byte[] bytes) { return Convert.ToBase64String(bytes); } |
您可以使用convert.tobase64文档http://msdn.microsoft.com/en-us/library/dhx0d524.aspx