c# - BitConverter.ToString() 与 Convert.ToBase64String()

标签 c# .net

我原以为 Convert.ToBase64String() 是用来创建字节数组的 ba​​se64 字符串的方法,但我最近遇到了 BitConverter.ToString()。两者有什么区别?

更具体地说,什么时候应该使用一个而不是另一个?


例如 this question关于创建 MD5 摘要,CraigS 的评论在回答中指出“ToBase64String 没有返回我想要的内容。但是,字节数组周围的 BitConverter.ToString 可以解决问题。”

BitConverter.ToString(
    MD5.Create().ComputeHash(Encoding.Default.GetBytes(StringToEncode))
).Replace("-", "")

对比

Convert.ToBase64String(
    MD5.Create().ComputeHash(Encoding.Default.GetBytes(StringToEncode))
)

另外,图片转base64应该用什么编码?

public string ImageToBase64(int Img_ID)
{
    byte[] tempBytes = showImageById(Img_ID); // get image from DB
    return Convert.ToBase64String(tempBytes);
}

对比

public string ImageToBase64(int Img_ID)
{
    byte[] tempBytes = showImageById(Img_ID); // get image from DB
    return BitConverter.ToString(tempBytes).Replace("-", "");
}

最佳答案

BitConverter.ToString不进行 Base64 编码,它转换为带连字符的十六进制(Base 16,每个字节之间有破折号)。

最终,使用对您的特定用途有意义的那个。如果您通过文本媒体(例如 http)发送位,请使用 Base64,因为您需要传输的总体数据较少。

如果您只想向用户显示一些二进制数据的文本表示,您可以使用 BitConverter.ToString()

关于c# - BitConverter.ToString() 与 Convert.ToBase64String(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337742/

相关文章:

.net - dotnet test 不会使用通配符递归搜索文件夹中的 .csproj

c# - 存储和调用具有多个未知参数的未知方法的委托(delegate)?

c# - 从 C# 调用 Python 方法(没有 IronPython)

c# - C#中的属性初始化

c# - 扩展方法如何连接

c# - 我如何在字符串c#中获取某个索引之后的所有内容

c# - 为什么这是错误的? (C# 任务继续)

c# - 如何使用 List<ListItem> 填充 DropDownList

c# - 如何控制radgrid的宽度

.net - 这段代码是线程安全的吗?