Jag har ett mail med en liten wav-fil bifogad, denna ska kodas med base64, detta funkar men om filen e lite stor så tar det ENORM tid, ska det verkligen göra det? Ja det kan bli otroligt slött om du bygger upp en stor sträng på ett mindre bra sätt. ' Decodes a base-64 encoded string (BSTR type). Hej! Det första du borde göra i den koden är att definiera alla typer. tro fan det blir segt om det är varianter allihop. Sämsta kod jag sett på länge! Hej, koden kom från nätet nånstans och var för VBS. nää, denna kod är inte bra, filer över 50 kb så skiter det sig. Jag har inte testat denna men det ser bra ut..Base64 är otroligt slött!
vore tacksam för svar.
/BSv: Base64 är otroligt slött!
typ
str = str & "A"
osv
Posta din kod så kan jag ge förslag till bättre lösning :)
OlaSv: Base64 är otroligt slött!
' 1999 - 2004 Antonin Foller, http://www.pstruh.cz
' 1.01 - solves problem with Access And 'Compare Database' (InStr)
Function Base64Decode(ByVal base64String)
'rfc1521
'1999 Antonin Foller, PSTRUH Software, http://pstruh.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim dataLength, sOut, groupBegin
'remove white spaces, If any
base64String = Replace(base64String, vbCrLf, "")
base64String = Replace(base64String, vbTab, "")
base64String = Replace(base64String, " ", "")
'The source must consists from groups with Len of 4 chars
dataLength = Len(base64String)
If dataLength Mod 4 <> 0 Then
Err.Raise 1, "Base64Decode", "Bad Base64 string."
Exit Function
End If
' Now decode each group:
For groupBegin = 1 To dataLength Step 4
Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
' Each data group encodes up To 3 actual bytes.
numDataBytes = 3
nGroup = 0
For CharCounter = 0 To 3
' Convert each character into 6 bits of data, And add it To
' an integer For temporary storage. If a character is a '=', there
' is one fewer data byte. (There can only be a maximum of 2 '=' In
' the whole string.)
thisChar = Mid(base64String, groupBegin + CharCounter, 1)
If thisChar = "=" Then
numDataBytes = numDataBytes - 1
thisData = 0
Else
thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
End If
If thisData = -1 Then
Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
Exit Function
End If
nGroup = 64 * nGroup + thisData
Next
'Hex splits the long To 6 groups with 4 bits
nGroup = Hex(nGroup)
'Add leading zeros
nGroup = String(6 - Len(nGroup), "0") & nGroup
'Convert the 3 byte hex integer (6 chars) To 3 characters
pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 5, 2)))
'add numDataBytes characters To out string
sOut = sOut & Left(pOut, numDataBytes)
Next
Base64Decode = sOut
End FunctionSv: Base64 är otroligt slött!
MSXML4 klarar detta, kan det vara något?
Du får göra om det lite i så fall..
se http://www.perfectxml.com/articles/xml/binary.asp
OlaSv: Base64 är otroligt slött!
Alltså:
Dim x as long, a as string
osv.
Orkar inte analysera vad alla grejer är för något.
Sen ska du ändra strängfunktionerna till t.ex. Mid$(...) istället för Mid(...).
Då lär du få se en hygglig höjning iaf.Sv: Base64 är otroligt slött!
Jag ska testa detta och se hur det blir.
Tack så länge.
/BSv: Base64 är otroligt slött!
Är det nån som kan tipsa om vettigare VB-kod för decoding av Base64?
/BSv: Base64 är otroligt slött!
http://www.xbeat.net/vbspeed/c_Base64Dec.htm
Ola