我怎样才能安全地将一个字节数组转换成一个string,并返回?
我不关心编码和东西,只要我回到完全相同的字节数组。
所以总结一下:如何将一个字节数组转换成一个string,然后将该string转换回到我开始使用的同一个字节数组中?
将字节转换为string并返回的绝对最安全的方法是使用base64:
string base64 = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64String(base64);
这样你就可以保证不会得到“无效的”Unicode序列,比如代理对的前半部分没有下半部分。 没有什么会决定将数据归一化到奇怪的东西(全是ASCII)。 没有机会使用未在Unicode中注册的代码点,或类似的东西。 哦,你也可以切割和粘贴,没有太多的恐惧。
是的,每3个字节最后会有4个字符 – 但是要知道您的数据不会被破坏,这是一个很小的代价。
您可以使用Convert.ToBase64文档http://msdn.microsoft.com/en-us/library/dhx0d524.aspx
你可以像下面那样使用Convert
类。
/// <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); }