HexDump umrechnen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Mooch

Betreff: HexDump umrechnen

BeitragSa, Dez 17, 2005 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoy Leutz !
Very Happy

Ich brauchte mal so eine Funktion mit der man aus
dem Hexdump den zB der Resource Hacker liefert
dezimalzahlen macht Very Happy

Also hab ich mir eine geschrieben:

BlitzBasic: [AUSKLAPPEN]
Dim z$(17)
Dim e(17)

z(0)=\"0\"
z(1)=\"1\"
z(2)=\"2\"
z(3)=\"3\"
z(4)=\"4\"
z(5)=\"5\"
z(6)=\"6\"
z(7)=\"7\"
z(8)=\"8\"
z(9)=\"9\"
z(10)=\"A\"
z(11)=\"B\"
z(12)=\"C\"
z(13)=\"D\"
z(14)=\"E\"
z(15)=\"F\"

Print HexToInt(\"AB\")

Function HexToInt(x$)
max = 8
If Len(x)>max Then Return ; zahl zu hoch

d=0
chk = 0
x = Upper(x)

For i=0 To Len(x)-1
For j=0 To 15
If Mid(x,i+1,1)=z(j) Then
chk=1
e(i)=j
EndIf
Next
If chk=0 Then Return ; unerlaubte ziffer
chk=0
Next

For i=0 To Len(x)-1
k=e(i) * (16^(Len(x)-i-1))
d=d+k
Next

value = d
Return value
End Function


Joa kleines Beispiel ist dabei Very Happy
Die Funktion will als Parameter eine Hex Zahl haben also zB:
AE oder 01.
Zurück gibt sie den Dezimalwert der Zahl.

Das geht nicht mit den Hex Werten die von BB geliefert werden!
Die haben nämlich vor dem eigentlichen wert noch so viele Nullen Wink

mfg
moOch
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


 

f L i P

BeitragSa, Dez 17, 2005 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
denke das bringt nur was wenn du funktionen für alle gängigen zahlensysteme schreibst

hex2bin
bin2hex
dec2hex
...

MfG fLiP
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!

Mooch

BeitragSa, Dez 17, 2005 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm kann ja sein aber ich brauchte ja einfach nur eine
Funktion die hex2dez macht um den HexDump in byte Form ausgeben
zu können da zB Smartsniff einige (wichtige) bytewerte nicht anzeigen, dafür aber als hexdump exportieren kann.

mfg
moOch
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


 

David

BeitragSa, Dez 17, 2005 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Hier gabs mal so ein paar Aufgabenthreads (von wunderkind) da war einmal die Aufgabe Werte zwischen verschiedenen Zahlensystemen umzurechnen.
Hier meine Lösung:

BlitzBasic: [AUSKLAPPEN]

Graphics 800, 600, 32, 2

; Konstanten

Const tbl$ = \"0123456789ABCDEF\"
Const binTbl$ = \"0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111\"

; Hauptprogramm

val$ = Input( \"Geben Sie eine Zahl ein: \" )

Print \"1) Dez -> Bin/Hex\"
Print \"2) Hex -> Dez/Bin\"
Print \"3) Bin -> Dez/Hex\"

Repeat
Sys$ = Input( \"Geben Sie das System an wie umgerechnet werden soll: \" )
Until Int( Sys$ ) >= 1 And Int( Sys$ ) <= 3

Print \"\"

Select Int( Sys$ )
Case 1
If ( CheckValidDec( val$ ) )
Print \"Bin: \" + DecToBin$( val$ )
Print \"Hex: \" + DecToHex$( val$ )
Else
Print \"Keine gueltige Dezimalzahl\"
End If

Case 2
If ( CheckValidHex( val$ ) )
Print \"Dez: \" + HexToDec%( val$ )
;Print \"Bin: \" + DecToBin$( HexToDec%( val$ ) )
Print \"Bin: \" + HexToBin( val$ )
Else
Print \"Keine gueltige Hexadezimalzahl\"
End If

Case 3
If ( CheckValidBin( val$ ) )
Print \"Dez: \" + BinToDec%( val$ )
;Print \"Hex: \" + DecToHex$( BinToDec%( val$ ) )
Print \"Hex: \" + BinToHex$( val$ )
Else
Print \"Keine gueltige Binaerzahl\"
End If
End Select

WaitKey
End

; ===================
;
; CheckValidHex()
;

Function CheckValidHex( val$ )
For i% = 1 To Len( val$ )
c$ = Mid( val$, i, 1 )

If ( Not Instr( tbl$, Upper( c$ ) ) ) Return False
Next

Return True
End Function

; ===================
;
; CheckValidDec()
;

Function CheckValidDec( val$ )
For i% = 1 To Len( val$ )
c$ = Mid( val$, i, 1 )

If ( c$ < \"0\" Or c$ > \"9\" ) Return False
Next

Return True
End Function

; ===================
;
; CheckValidBin()
;

Function CheckValidBin( val$ )
For i% = 1 To Len( val$ )
c$ = Mid( val$, i, 1 )

If ( c$ < \"0\" Or c$ > \"1\" ) Return False
Next

Return True
End Function

; ===================
;
; DecToX()
;

Function DecToN$( val%, base% )
res$ = \"\"
tmp% = val%

While tmp% > 0
res$ = Mid( tbl$, ( tmp% Mod base% + 1 ), 1 ) + res$
tmp% = tmp% / base%
Wend

Return res$
End Function

; ===================
;
; XToDec()
;

Function NToDec%( val$, base% )
res% = 0

For i% = 1 To Len( val$ )
res% = res% * base% + Instr( tbl$, Upper( Mid( val$, i, 1 ) ) ) - 1
Next

Return res%
End Function

; ===================
;
; DecToHex()
;

Function DecToHex$( val% )
Return DecToN( val%, 16 )
End Function

; ===================
;
; DecToBin()
;

Function DecToBin$( val% )
Return DecToN( val%, 2 )
End Function

; ===================
;
; BinToDec()
;

Function BinToDec%( val$ )
Return NToDec( val$, 2 )
End Function

; ===================
;
; HexToDec()
;

Function HexToDec%( val$ )
Return NToDec( val$, 16 )
End Function

; ===================
;
; HexToBin()
;

Function HexToBin$( val$ )
res$ = \"\"

For i% = 1 To Len( val$ )
res$ = res$ + Mid$( binTbl$, ( Instr( tbl$, Upper( Mid( val$, i, 1 ) ) ) * 5 ) - 4, 4 )
Next

Return res$
End Function

; ===================
;
; BinToHex()
;

Function BinToHex$( val$ )
value$ = val$
res$ = \"\"

While ( Len( value$ ) Mod 4 )
value$ = \"0\" + value$
Wend

For i% = 1 To Len( val$ ) Step 4
res$ = res$ + Mid$( tbl$, ( Instr( binTbl$, Mid$( value$, i, 4 ) ) / 5 ) + 1, 1 )
Next

Return res$
End Function


DecToN() -> Rechnet einen Dezimalwert in ein beliebiges Zahlensystem um (begrenzt s. Lookup)
NToDec() -> Rechnet von einem beliebigen Zahlensystem in das Dezimalsystem um (begrenzt s. Lookup)
DecToHex() -> Rechnet von Dezimal in Hexadezimal
DecToBin() -> Rechnet von Dezimal in Binär
BinToDec() -> Rechnet von Binär in Dezimal
HexToDec() -> Rechnet von Hexadezimal in Dezimal
HexToBin() -> Rechnet von Hexadezimal in Binär
BinToHex() -> Rechnet von Binär in Hexadezimal

grüße

Mooch

BeitragSa, Dez 17, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch ne Lösung Wink

mfg
moOch
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


 

David

BeitragSa, Dez 17, 2005 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach tatsächlich??? Rolling Eyes

Noch ne Frage, warum nennst du deine Funktion HexToInt?

grüße

Mooch

BeitragMo, März 20, 2006 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok... HexToByte würd besser passen...
Aber: wieso nennst du dich David? ^^
Lass die arme Funktion doch so heißen....

Laughing

mfg
moOch
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group