You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET十六进制字符串转Base64结果不匹配问题如何解决

问题根因

你当前的错误是直接将十六进制字符串的每个字符当做普通UTF8文本转成字节数组,再进行Base64编码,本质是对十六进制字符串本身做了Base64转码,而非对十六进制代表的原始二进制数据转码。正确逻辑需要先把十六进制字符串解码为对应的原始字节数组,再对字节数组做Base64编码。

调整后代码

兼容.NET 3.5/4.6通用版本

自己实现十六进制转字节数组的方法,兼容所有版本的.NET框架:

' 十六进制字符串转原始字节数组工具方法
Public Function HexStringToBytes(hexStr As String) As Byte()
    Dim byteCount As Integer = hexStr.Length \ 2
    Dim result(byteCount - 1) As Byte
    For i = 0 To byteCount - 1
        result(i) = Convert.ToByte(hexStr.Substring(i * 2, 2), 16)
    Next
    Return result
End Function

' 业务调用代码
Dim QrCodeHex As String = "010c426f6273205265636f726473020f3331303132323339333530303030330314323032322d30342d32355431353a33303a30305a0407313030302e303005063135302e3030"
Dim QrCodeBase64En As String = Convert.ToBase64String(HexStringToBytes(QrCodeHex))

.NET 4.0及以上简化版本(适用于VS2019 .NET 4.6环境)

可以直接用框架内置的SoapHexBinary类完成十六进制转字节数组,无需自己写转换逻辑:

Dim QrCodeHex As String = "010c426f6273205265636f726473020f3331303132323339333530303030330314323032322d30342d32355431353a33303a30305a0407313030302e303005063135302e3030"
Dim hexBytes = System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary.Parse(QrCodeHex).Value
Dim QrCodeBase64En As String = Convert.ToBase64String(hexBytes)

结果验证

以上代码运行后输出的Base64结果和你预期的一致:

AQxCb2JzIFJlY29yZHMCDzMxMDEyMjM5MzUwMDAwMwMUMjAyMi0wNC0yNVQxNTozMDowMFoEBzEwMDAuMDAFBjE1MC4wMA==

内容的提问来源于stack exchange,提问作者SAIJAN KP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:06:03