vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
:rage Kniffliger Code... 
Autor: OliverE
Datum: 01.08.03 10:00

Hallo,
vielleicht kann mir jemand helfen, bevor ich hier noch wahnsinnig werde:
ich will folgende C-Funkttion nach VB übersetzen:

static unsigned short base64_dec(unsigned char *psrc)
{
unsigned short tmp;
tmp= *psrc & 0x3f;
tmp+=((unsigned short)(*(psrc+1) & 0x3f))<<6;
tmp+=((unsigned short)(*(psrc+2) & 0x3f))<<12;
return tmp;
}

Hier habe ich mir nun folgende Funktion gebastelt:
Public Function base64dec(Value As String) As Long
On Error Resume Next
Dim tmp As Long
tmp = Asc(Left$(Value, 1)) And &H3F
tmp = tmp + LShift((Asc(Mid$(Value, 2, 1)) And &H3F), 6)
tmp = tmp + LShift((Asc(Mid$(Value, 3, 1)) And &H3F), 12)
base64dec = tmp
End Function


Wenn ich nun base64dec ("UvJ") aufrufe, dann kommt als Ergebnis immer 44437 - erwartet wäre aber 22378...


Danke für Eure Hilfe,
Oli

PS:
Für die Bit-Operation verwende ich folgende Code (www.freevbcode.com); dieser ist mE
ohne Fehler.

Private OnBits(0 To 31) As Long

Public Function LShift(ByVal Value As Long, _
ByVal Shift As Integer) As Long

MakeOnBits

If (Value And (2 ^ (31 - Shift))) Then GoTo OverFlow

LShift = ((Value And OnBits(31 - Shift)) * (2 ^ Shift))

Exit Function

OverFlow:
LShift = ((Value And OnBits(31 - (Shift + 1))) * _
(2 ^ (Shift))) Or &H80000000
End Function

Private Sub MakeOnBits()
Dim j As Integer, _
v As Long

For j = 0 To 30

v = v + (2 ^ j)
OnBits(j) = v
Next j
OnBits(j) = v + &H80000000
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
:rage Kniffliger Code...165OliverE01.08.03 10:00
Re: :rage Kniffliger Code...542ModeratorDieter02.08.03 13:46

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel