从字节数组转换为base64并返回

时间:2012-07-24 15:29:23

标签: c# encoding base64 bytearray type-conversion

我想:

  1. 生成字节数组。
  2. 将该字节数组转换为base64
  3. 将该base64字符串转换回字节数组。
  4. 我尝试了一些解决方案,例如question中的解决方案。

    由于某种原因,初始和最终字节数组不匹配。以下是使用的代码:

    using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
        {
             byte[] originalArray = new byte[32];
             rng.GetBytes(key);
             string temp_inBase64 = Convert.ToBase64String(originalArray);
             byte[] temp_backToBytes = Encoding.UTF8.GetBytes(temp_inBase64);
        }
    

    我的问题是:

    1. 为什么“originalArray”和“temp_backToBytes”不匹配? (originalArray的长度为32,temp_backToBytes的长度为44,但它们的值也不同)

    2. 是否可以来回转换,如果是这样,我该如何做到这一点?

1 个答案:

答案 0 :(得分:41)

编码数组长约四分之一的原因是base-64编码只使用每个字节中的六位;这就是它存在的原因 - 以适合通过仅ASCII通道(如电子邮件)进行交换的方式对任意数据进行编码,可能使用零和其他不可打印的字符。

恢复原始阵列的方法是使用Convert.FromBase64String

 byte[] temp_backToBytes = Convert.FromBase64String(temp_inBase64);