Hallo liebe Scripter
Ich suche eine Funktion die mir eine binäre Zahl mit einer Größe von 1 Byte in eine hexadezimale wandelt.
Beispiel:
10010101b sollte zu 95h gewandelt werden
Vielen Dank
Hallo liebe Scripter
Ich suche eine Funktion die mir eine binäre Zahl mit einer Größe von 1 Byte in eine hexadezimale wandelt.
Beispiel:
10010101b sollte zu 95h gewandelt werden
Vielen Dank
Vielen Dank!
Hatte ich leider nicht gefunden
Oder als kleine Funktion (ohne Errorhandling):
[autoit]
ConsoleWrite(_BinToHex('10010101') & @CRLF)
Func _BinToHex($bin)
Local $dec, $len = StringLen($bin)
For $i = $len To 1 Step -1
$dec += 2 ^ ($len - $i) * StringMid($bin, $i, 1)
Next
Return StringRegExpReplace(Hex($dec), '0*(.+)', '$1')
EndFunc ;==>_BinToHex
Ich weiß, dass ich jetzt Leichenschändung betreibe, aber ich hätte da einen Hinweis für die, die so eine Funktion suchen.
Unter WinXP muss die Funktion so lauten:
Func _BinToHex($bin)
Local $dec, $len = StringLen($bin)
For $i = $len To 1 Step -1
$dec += 2 ^ ($len - $i) * StringMid($bin, $i, 1)
Next
Return StringRegExpReplace(Hex(Int($dec)), '0*(.+)', '$1')
EndFunc ;==>_BinToHex
Ohne das Int() kommt ein falsches Ergebnis raus.
Das liegt nicht an WinXP, sondern an AutoIt.
Das ist eine der seltsamen Neuerungen die das letzte Update mit sich brachte...
lg
M
So seltsam ist es eigentlich gar nicht.
Früher konnte Hex() nur Integerzahlen in hexadezimaler Form darstellen.
Float-Zahlen wurden daher vorher implizit in Integerzahlen umgewandelt.
Seit dem letzten Update beherrscht Hex() nun auch Gleitkommazahlendarstellung weswegen man sich natürlich Gedanken machen muss welchem Datentyp man nun der Hex-Funktion übergibt.
Ah ok danke Junkie