C# byte[]数组和string的互相转化

string  str    = System.Text.Encoding.UTF8.GetString(bytes); 
byte[] decBytes = System.Text.Encoding.UTF8.GetBytes(str); 

同样的,System.Text.Encoding.Default,System.Text.Encoding.ASCII也是可以的。

还可以使用System.Text.Encoding.UTF8.GetString(bytes).TrimEnd('\0')给字符串加上结束标识。

string    str    = BitConverter.ToString(bytes);  
String[] tempArr = str.Split('-');
byte[]   decBytes = new byte[tempArr.Length];
for (int i = 0; i < tempArr.Length; i++)
{
    decBytes[i] = Convert.ToByte(tempArr[i], 16);
}

这种方法会给字符串加上 '-' 连字符,并且没有函数转换回去。所以需要手动转换为bytes。

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

这种方法简单明了,完美无问题。需要注意的是,转换出来的string可能会包含 '+','/' , '=' 所以如果作为url地址的话,需要进行 encode。

string  str    = HttpServerUtility.UrlTokenEncode(bytes);  
byte[] decBytes = HttpServerUtility.UrlTokenDecode(str);

这种方法会自动编码url地址的特殊字符,可以直接当做url地址使用。但需要依赖 System.Web库才能使用。

 

将字符串转成 Base64 编码

  /// <summary>
        ///
        /// </summary>
        /// <param name="Str"></param>
        /// <returns></returns>
        public string ToBase64Str(string Str)
        {
            byte[] b = System.Text.Encoding.Default.GetBytes(Str);
            return Convert.ToBase64String(b);

        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="Str"></param>
        /// <returns></returns>
        public string FromBase64Str(String Str)
        {
            byte[] b = Convert.FromBase64String(Str);
            return System.Text.Encoding.Default.GetString(b);
        }

 转载于:https://scottcgi.blog.csdn.net/article/details/71643015?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-71643015-blog-106790600.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-71643015-blog-106790600.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=6

posted @ 2022-08-25 11:13  卑微小老弟  阅读(2205)  评论(0编辑  收藏  举报