Skip to content

VBMAN.ToolsBase64 - Base64 编解码对象

概述

VBMAN.ToolsBase64 提供了 Base64 编码和解码功能,支持字符串和字节数组的相互转换,常用于数据传输、图片编码、配置文件等场景。

核心特性

  • 双向转换: 支持编码和解码
  • 多种输入: 支持字符串和字节数组
  • 标准 Base64: 兼容 RFC 4648 标准
  • URL 安全: 支持 URL 安全的 Base64 变体

方法

Encode

将字符串编码为 Base64

vb
Public Function Encode(text As String) As String

参数:

  • text - 要编码的字符串

返回: Base64 编码的字符串

示例:

vb
' 编码字符串
Dim encoded As String
encoded = VBMAN.ToolsBase64.Encode("Hello World")
Debug.Print encoded  ' SGVsbG8gV29ybGQ=

' 编码中文
encoded = VBMAN.ToolsBase64.Encode("你好世界")
Debug.Print encoded  ' 5L2g5aW95LiW55WM

Decode

将 Base64 解码为字符串

vb
Public Function Decode(base64String As String) As String

参数:

  • base64String - Base64 编码的字符串

返回: 解码后的字符串

示例:

vb
' 解码
Dim decoded As String
decoded = VBMAN.ToolsBase64.Decode("SGVsbG8gV29ybGQ=")
Debug.Print decoded  ' Hello World

BytesToBase64

将字节数组转为 Base64

vb
Public Function BytesToBase64(bytes() As Byte) As String

参数:

  • bytes - 字节数组

返回: Base64 编码的字符串

示例:

vb
' 字节数组转 Base64
Dim bytes(0 To 4) As Byte
bytes(0) = 72: bytes(1) = 101
bytes(2) = 108: bytes(3) = 108
bytes(4) = 111

Dim base64 As String
base64 = VBMAN.ToolsBase64.BytesToBase64(bytes)
Debug.Print base64  ' SGVsbG8=

Base64ToBytes

将 Base64 转为字节数组

vb
Public Function Base64ToBytes(base64String As String) As Byte()

参数:

  • base64String - Base64 编码的字符串

返回: 字节数组

示例:

vb
' Base64 转字节数组
Dim bytes() As Byte
bytes = VBMAN.ToolsBase64.Base64ToBytes("SGVsbG8=")

' 使用字节数组
Dim i As Integer
For i = LBound(bytes) To UBound(bytes)
    Debug.Print bytes(i);
Next

综合示例

示例1: 图片 Base64 编码

vb
Private Function ImageToBase64(filePath As String) As String
    ' 读取图片文件
    VBMAN.FileEx.OpenFile filePath, "R"
    Dim bytes() As Byte
    bytes = VBMAN.FileEx.ReadData.ReturnBytes
    VBMAN.FileEx.CloseFile
    
    ' 转为 Base64
    ImageToBase64 = VBMAN.ToolsBase64.BytesToBase64(bytes)
End Function

Private Sub EmbedImage()
    Dim base64Image As String
    base64Image = ImageToBase64("C:\\photo.jpg")
    
    ' 嵌入 HTML
    Dim html As String
    html = "<img src='data:image/jpeg;base64," & base64Image & "'>"
    WebBrowser1.Document.Write html
End Sub

示例2: Basic 认证头

vb
Private Function CreateBasicAuthHeader(username As String, password As String) As String
    ' 组合用户名密码
    Dim credentials As String
credentials = username & ":" & password
    
    ' Base64 编码
    Dim encoded As String
    encoded = VBMAN.ToolsBase64.Encode(credentials)
    
    ' 构建认证头
    CreateBasicAuthHeader = "Basic " & encoded
End Function

Private Sub TestAuth()
    Dim authHeader As String
    authHeader = CreateBasicAuthHeader("admin", "secret123")
    Debug.Print authHeader  ' Basic YWRtaW46c2VjcmV0MTIz
End Sub

示例3: 配置文件加密存储

vb
Private Sub SaveEncodedConfig(config As String, filePath As String)
    ' 编码配置内容
    Dim encoded As String
    encoded = VBMAN.ToolsBase64.Encode(config)
    
    ' 保存到文件
    VBMAN.FileEx.SetBufferText(encoded, "UTF-8").SaveData filePath
End Sub

Private Function LoadEncodedConfig(filePath As String) As String
    ' 读取文件
    Dim encoded As String
    encoded = VBMAN.FileEx.OpenFile(filePath, "R").ReadData.ReturnText("UTF-8")
    VBMAN.FileEx.CloseFile
    
    ' 解码
    LoadEncodedConfig = VBMAN.ToolsBase64.Decode(encoded)
End Function

示例4: 数据传输

vb
Private Sub SendDataPacket(data As String)
    ' 编码数据
    Dim encoded As String
    encoded = VBMAN.ToolsBase64.Encode(data)
    
    ' 构建 JSON 数据包
    Dim packet As New cJson
    packet("type") = "data"
    packet("encoding") = "base64"
    packet("content") = encoded
    
    ' 发送
    Socket.SendData VBMAN.ToolsUtf8.Encode(packet.Encode)
End Sub

Private Sub ReceiveDataPacket(bytes() As Byte)
    ' 解析 JSON
    Dim json As cJson
    Set json = VBMAN.Json.Decode(VBMAN.ToolsUtf8.Decode(bytes))
    
    ' 检查编码方式
    If json("encoding") = "base64" Then
        ' 解码内容
        Dim content As String
        content = VBMAN.ToolsBase64.Decode(json("content"))
        
        ' 处理内容...
        Debug.Print content
    End If
End Sub

最佳实践

  1. 传输编码: 二进制数据通过文本协议传输时使用 Base64
  2. 图片嵌入: HTML/CSS 中嵌入小图片使用 Base64
  3. 认证信息: HTTP Basic 认证使用 Base64 编码
  4. 数据完整性: Base64 编码后可安全地在 URL、JSON、XML 中传输
  5. 大小注意: Base64 编码后体积增加约 33%,大数据量考虑其他方案

VB6及其LOGO版权为微软公司所有