gpt4 book ai didi

file - 将二进制文件转换为 Base64 字符串

转载 作者:行者123 更新时间:2023-12-04 15:38:02 25 4
gpt4 key购买 nike

我需要将上传的二进制文件即时转换为 base64 字符串格式。我正在使用 ASP、Vbscript。使用 Midori 的组件进行 base64 转换。对于小文件(<20K),性能还可以。但是当它超过75或100K时,它就完全丢失了。有什么有效的方法可以将大二进制文件 (2MB) 转换为 base64 字符串格式?

提前致谢,
肯尼

最佳答案

您应该使用 .NET 方法 Convert.ToBase64String 和 Convert.FromBase64String。

使用 Convert.FromBase64String() 方法。这会给你二进制
数据返回(作为字节数组)。

要将二进制数据转换为 Base64 字符串,请参阅 vbscript 中从二进制数据到字符串的转换函数

来自 http://www.motobit.com/tips/detpg_Base64Encode/

Function Base64EncodeBinary(inData)
Base64EncodeBinary = Base64Encode(BinaryToString(inData))
End Function

Function Base64Encode(inData)
'rfc1521
'2001 Antonin Foller, Motobit Software, http://Motobit.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim cOut, sOut, I

'For each group of 3 bytes
For I = 1 To Len(inData) Step 3
Dim nGroup, pOut, sGroup

'Create one long from this 3 bytes.
nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
&H100 * MyASC(Mid(inData, I + 1, 1)) + MyASC(Mid(inData, I + 2, 1))

'Oct splits the long To 8 groups with 3 bits
nGroup = Oct(nGroup)

'Add leading zeros
nGroup = String(8 - Len(nGroup), "0") & nGroup

'Convert To base64
pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)

'Add the part To OutPut string
sOut = sOut + pOut

'Add a new line For Each 76 chars In dest (76*3/4 = 57)
'If (I + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
Next
Select Case Len(inData) Mod 3
Case 1: '8 bit final
sOut = Left(sOut, Len(sOut) - 2) + "=="
Case 2: '16 bit final
sOut = Left(sOut, Len(sOut) - 1) + "="
End Select
Base64Encode = sOut
End Function

Function MyASC(OneChar)
If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function

关于file - 将二进制文件转换为 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com