【问题标题】:How do I convert base64-encoded text to hexadecimal in VB.NET?如何在 VB.NET 中将 base64 编码的文本转换为十六进制?
【发布时间】:2012-01-23 15:29:16
【问题描述】:

我在 .net 中遇到过一些 Base64 转换函数(FromBase64.string 等)。我想要的是,对于一个样本,我有一个 base 64 编码的字符串作为

"48YwojCi4yaiow==".

我需要将此字符串转换为相应的十六进制文本(示例代表十六进制文本中的“Thisistest”) 以下链接是从 base64 到十六进制文本的在线转换器。如果你在链接中给出相同的base64编码数据,点击转换,在“十六进制文本”下面看到的就是我需要的。

http://www.hcidata.info/base64.htm

在 vb.net 中是否有一个标准库函数可以做到这一点?将 base 64 数据转换为十六进制文本?

【问题讨论】:

标签: .net vb.net hex base64


【解决方案1】:

您必须首先使用Convert.FromBase64String 将base64 字符串转换为字节。 然后你必须单独将字节转换为十六进制表示。

示例(C#,但你会明白的)

string ToHexString(byte[] bytes) 
{
   StringBuilder sb = new StringBuilder();
   foreach (byte b in bytes) sb.Append(b.ToString("x2"));
   return sb.ToString();
}

【讨论】:

  • 请注意,不要对代码块使用块引用格式,因为它会忽略换行符并且不应用语法突出显示。相反,单击代码格式化按钮 - 带有花括号 {} 的那个。
【解决方案2】:

您需要先使用Convert.FromBase64String method 将base64 编码的字符串转换为字节数组。

然后,您可以使用接受格式说明符的Byte.ToString 的重载来获取该字节数组并单独将它们转换为等效的十六进制表示。可用的格式说明符记录在 here 中,但您想要的是 X or x for hexadecimal,具体取决于您是否希望字母大写。

如果您想将所有这些都隐藏起来以便于使用,您可以将所有这些封装到 String 类的扩展方法中。例如:

<System.Runtime.CompilerServices.Extension> _
Public Shared Function ConvertToHex(str As String) As String
    ' Convert the specified base64-encoded string into an array of bytes.
    Dim bytes As Byte() = Convert.FromBase64String(str)

    ' Loop through each of the items in the array and convert
    ' to their equivalent hexadecimal representations
    Dim sb As New StringBuilder()
    For Each b As Byte In bytes
        sb.Append(b.ToString("X2"))
    Next
    Return sb.ToString()
End Function

或者,您可以调查使用BitConverter.ToString method 而不是循环将字节数组中的每个值转换为其等效的十六进制字符串表示形式。这将产生一个用连字符分隔的十六进制对字符串。

我不知道哪种方法“更好”或更高效。您必须对代码进行概要分析,或者选择您认为更具可读性的代码。

<System.Runtime.CompilerServices.Extension> _
Public Shared Function ConvertToHex(str As String) As String
    ' Convert the specified base64-encoded string into an array of bytes.
    Dim bytes As Byte() = Convert.FromBase64String(str)

    ' Convert each of the items in the array to a hex string.
    return BitConverter.ToString(bytes)
End Function

如果您不希望 BitConverter.ToString 方法返回的字符串中出现破折号,则需要删除它们:

returnString.Replace("-", String.Empty)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多