flugwaps
Goto Top

ASCII nach HEX Konvertierung z.B. ABC nach 414243

Hallo allesamt !

ich habe da eine vielleicht etwas exotische Problemstellung
für einen selbst gebastelten Webseitengenerator.

Zwar ist das Problem schon per selbstprogrammierter exe gelöst, aber es "passt" nicht in das batch-Projekt.
(Nur für diese Funktion ruft das batch eine exe auf -> blöd)

Aufgabe :
eine Variable hat den Wert ABC und soll in die ASCII-hex-Darstellung gewandelt werden.
Es soll aus rauskommen : 414243.
... dies natürlich für den gesamten Zeichenvorrat face-smile
Könnt ihr mir Ansätze aufzeigen wie in Batch so etwas realisiert werden kann?

Grüße und besten Dank im Voraus.

Content-Key: 118385

Url: https://administrator.de/contentid/118385

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 77559
77559 Jun 17, 2009 at 09:21:56 (UTC)
Goto Top
Zitat von @flugwaps:
Hallo alleine,
eine Variable hat den Wert ABC und soll in die ASCII-hex-Darstellung gewandelt werden.
Es soll aus rauskommen : 414243.
... dies natürlich für den gesamten Zeichenvorrat face-smile
Das ist erstens mit nur Batchmitteln extrem langsam und schwierig und je nach Definition von gesamten Zeichenvorrat unmöglich.
DOS 437/850 ? Ansi ? ISO 8859-1 /-15 ? UTF-8 /-16? etc..

Könnt ihr mir Ansätze aufzeigen wie in Batch so etwas realisiert werden kann?
Zeichen für Zeichen gegen ein Pseudoarray vergleichen.

Im Klartext ist es günstiger ein vorhandenes externes Programm zu benutzen.

Gruß
LotPings
Member: bastla
bastla Jun 17, 2009 at 10:13:45 (UTC)
Goto Top
... oder vielleicht damit das Auslangen zu finden:
@echo off & setlocal
set A=%temp%\ASC2HEX.vbs
>%A% echo A=WScript.Arguments(0):For i=1 To Len(A):H=H^& Hex(Asc(Mid(A,i,1))):Next:WScript.Echo H

set "ASC=ABCDE"  
for /f %%i in ('cscript //nologo %A% "%ASC%"') do set "HEX=%%i"  
echo %ASC% --^> %HEX%
Grüße
bastla

[Edit] Zeile 6 korrigiert [/Edit]
Mitglied: 77559
77559 Jun 17, 2009 at 10:22:12 (UTC)
Goto Top
Hallo bastla,

du hast ja Recht face-wink

Aber damit nicht immer 414243 rauskommt, würde ich Zeile 06 ändern in
for /f %%i in ('cscript //nologo %A% "%ASC%"') do set "HEX=%%i"

Gruß
LotPings
Member: flugwaps
flugwaps Jun 17, 2009 at 10:55:49 (UTC)
Goto Top
In diesem Sinne : 44414E4B452021 face-smile
Mitglied: 77559
77559 Jun 17, 2009, updated at Oct 18, 2012 at 16:38:27 (UTC)
Goto Top
Zitat von @flugwaps:
In diesem Sinne : 44414E4B452021 face-smile

44616E6B652021 sähe aber besser aus face-wink

Und für die Leute, die Ascii in Hex nicht direkt lesen können:

:: HEX2ASC.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [content:118385#449415]
@echo off & setlocal
Set vbs="%~dpn0.vbs"  
>%vbs% echo H=WScript.Arguments(0):For i=1 To Len(H) step 2:A=A^&chr("&H"^&Mid(H,i,2)):Next:WScript.Echo A  
set "HEX=44616E6B652021"  
for /f "delims=" %%i in ('cscript //nologo %vbs% "%HEX%"') do set "ASC=%%i"  
echo %HEX% --^> %ASC%

Gruß
LotPings
Member: flugwaps
flugwaps Jun 17, 2009 at 12:56:36 (UTC)
Goto Top
Sollte ein lautes Danke sein face-smile
Mitglied: 77559
77559 Jun 17, 2009 at 13:05:51 (UTC)
Goto Top
OT
Ja, aber wenn man schreit, ist es so schwer dabei "freundlich" zu klingen. face-wink
/OT
Member: bastla
bastla Jun 17, 2009 at 14:26:06 (UTC)
Goto Top
@77559
Danke für's Aufräumen ... face-smile
... ich mach's dann oben auch noch richtig.

Grüße
bastla