Dezimal zu Hexadezimal
Hier habe ich ein Script programmiert mit dem es möglich ist "Dezimal zu Hexadezimal" zu konvertieren. Das ganze wurde auf Windows XP SP2 getestet.
Wie funktioniert das nun? Jedes Programm hat einen s. g. "ExitCode" (in C/C++ entspricht das dem return-Value von der main-Funktion) die Variable die abgefragt wird ist die versteckte Variable. Diese wird z. B. mit dem Befehl abgerufen. Dieser ExitCode wird in einer 8-Stelligen hexadezimalen Zahl zurückgegeben.
Und nun zur Konvertierung:
RUN.bat
DEC2HEX.bat
Ich weiß nicht wie schnell das ist aber voll ausreichend und einfach geschrieben mit board eignen mitteln (der CMD).
Wie funktioniert das nun? Jedes Programm hat einen s. g. "ExitCode" (in C/C++ entspricht das dem return-Value von der main-Funktion) die Variable die abgefragt wird ist die versteckte
!=ExitCode!
SET ""
Und nun zur Konvertierung:
RUN.bat
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /P DEC_VALUE=DEC=
CALL Dec2Hex HEX_VALUE !DEC_VALUE!
ECHO HEX=!HEX_VALUE!
ECHO.
PAUSE
DEC2HEX.bat
:DEC2HEX_START
GOTO DEC2HEX_MAIN
REM ******************************************
REM * *
REM * DEC2HEX [RETURN as Ref] [PARAM as Val] *
REM * *
REM ******************************************
:DEC2HEX_MAIN
CMD /C EXIT %2
FOR /L %%A IN (0,1,8) DO (
SET DEC2HEX_VAL=!=ExitCode:~%%A,1!
IF !DEC2HEX_VAL! NEQ 0 (
SET DEC2HEX_RETURN=!=ExitCode:~%%A!
GOTO DEC2HEX_RETURN
)
)
:DEC2HEX_RETURN
IF NOT DEFINED DEC2HEX_RETURN SET DEC2HEX_RETURN=0
SET %1=!DEC2HEX_RETURN!
:DEC2HEX_FREE
SET /F "USEBACKQ TOKENS=1 DELIMS==" %%A IN (`SET DEC2HEX_`) DO (
SET %%A=
)
:DEC2HEX_END
GOTO :EOF
Ich weiß nicht wie schnell das ist aber voll ausreichend und einfach geschrieben mit board eignen mitteln (der CMD).
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132273
Url: https://administrator.de/knowledge/dezimal-zu-hexadezimal-132273.html
Ausgedruckt am: 20.04.2025 um 16:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo 12648430 und willkommen im Forum!
Interessanter Ansatz - und funktioniert ...
Alternativ dazu sollte für positive Zahlen bis zur CMD-Genauigkeitsobergrenze von +2147483647 auch Folgendes genügen:
Grüße
bastla
Interessanter Ansatz - und funktioniert ...
Alternativ dazu sollte für positive Zahlen bis zur CMD-Genauigkeitsobergrenze von +2147483647 auch Folgendes genügen:
@echo off & setlocal
if [%1]== (set /p "Dez=Dezimalwert: ") else (set "Dez=%~1" & echo Dezimalwert: %~1)
set "Z10=A" & set "Z11=B" & set "Z12=C" & set "Z13=D" & set "Z14=E" & set "Z15=F"
set /a Rest=Dez
set "Hex="
:Loop
if %Rest%==0 goto :Fertig
set /a Ziffer=Rest%%16
if %Ziffer% gtr 9 call set "Ziffer=%%Z%Ziffer%%%"
set "Hex=%Ziffer%%Hex%"
set /a Rest=Rest/16
goto :Loop
:Fertig
echo Hexadezimal: %Hex%
bastla
Danke für die Antwort, mache aber irgendwas falsch..
Habe den hex-wert in einer variable drin.. (%ID%), habe der hex variable den wert gegeben, aber wird ja von deiner else klammer ja wieder überschrieben..
Ausgabe jedoch kommt nur:
Hexwert: %~1
sowie:
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),hexadezimale (0x11) oder oktale (021) Zahlen.
was mache ich falsch, klappts so bei dir?
Thx
Habe den hex-wert in einer variable drin.. (%ID%), habe der hex variable den wert gegeben, aber wird ja von deiner else klammer ja wieder überschrieben..
Ausgabe jedoch kommt nur:
Hexwert: %~1
sowie:
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),hexadezimale (0x11) oder oktale (021) Zahlen.
was mache ich falsch, klappts so bei dir?
Thx