| |
|
|
Michael Wodrich | siehe Erklärung im Code-Bereich... KompilierenMarkierenSeparierenMyHex$
by Michael Wodrich
Funktioniert "ähnlich" wie @Hex$.
Die Unterschiede:
Die Funktion arbeitet die Halbbytes mit einer Bitmaske ab und kann
so auch führende Nullen zurückgeben.
ABER: Es wird nicht geprüft, ob auch alle relevanten Stellen
abgearbeitet wurden! Gibt man also MyHex$($FEDC,3) an, dann
wird nur $EDC verarbeitet.
Das ist aber gewollt: es wird dann nur der untere Bereich ausgegeben
(ließe sich mit Angabe eines Startwertes noch ausbauen).
Der Programmierer sollte den Zahlenbereich also vorher abtesten.
Der 3. Parameter ist optional und kann die Ausgabe mit Leerzeichen gruppieren.
Proc MyHex$
If %PCount > 2
Parameters Wert&,Laenge%,Grp%
Else
Parameters Wert&,Laenge%
Declare Grp%
Grp% = 64
EndIf
Declare Ergebnis$,Maske&,GrpCnt%,HexStr$,Hexa%,ShiftCnt%
Clear Ergebnis$,ShiftCnt%
Maske& = $F
GrpCnt% = Grp%
HexStr$ = "0123456789ABCDEF"
While Laenge%
Dec Laenge%
Dec GrpCnt%
Hexa% = If(ShiftCnt%,((Wert& & Maske&) >> (ShiftCnt% * 4)) + 1,(Wert& & Maske&) + 1)
Ergebnis$ = Mid$(HexStr$,Hexa%,1) + Ergebnis$
If (GrpCnt% = 0) and (Laenge% > 0)
Ergebnis$ = Chr$(32) + Ergebnis$
GrpCnt% = Grp%
EndIf
Maske& = Maske& << 4
Inc ShiftCnt%
EndWhile
Return Ergebnis$
EndProc
Cls
Print "1111.0000.1010.0101 - F0A5:",MyHex$(%1111000010100101,1)
Print "1111.0000.1010.0101 - F0A5:",MyHex$(%1111000010100101,2)
Print "1111.0000.1010.0101 - F0A5:",MyHex$(%1111000010100101,4)
Print "1111.0000.1010.0101 - F0A5:",MyHex$(%1111000010100101,4,2);"
"
Print "$FDFD:",MyHex$($FDFD,8)
Print "$FDFD:",MyHex$($FDFD,8,2)
Print "$FDFD:",MyHex$($FDFD,8,4)
WaitKey
End
|
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 14.12.2005 ▲ |
|
|
|