Buchstaben in Zahlen umwandeln
Hallo, ich wollte mal fragen ob man Buchstaben (groß und klein schreibung egal) in ihre dazugehörige zahl umwandeln kann( A=1 B=2 usw.), und wie man es rückgängig macht.
Ich freue mich auf eure antworten.
LG Kawooshe
Ich freue mich auf eure antworten.
LG Kawooshe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 295292
Url: https://administrator.de/contentid/295292
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
8 Kommentare
Neuester Kommentar
Hallöchen.
Schaue mal nach dem Operator -replace.
Dort kannst du z.B ne txt datei mit Get-Content einlesen und dann mit -replace ersetzen was zu ersetzen möchtest.
Bei mehreren sollte es mit einem Array machbar sein denke ich.
Bin da noch nicht ganz zu weit aber es bringt dich bestimmt schonmal weiter
Mit freundlichen Grüßen
Sebastian
Schaue mal nach dem Operator -replace.
Dort kannst du z.B ne txt datei mit Get-Content einlesen und dann mit -replace ersetzen was zu ersetzen möchtest.
Bei mehreren sollte es mit einem Array machbar sein denke ich.
Bin da noch nicht ganz zu weit aber es bringt dich bestimmt schonmal weiter
Mit freundlichen Grüßen
Sebastian
Moin @Kawooshe,
du solltest hier erst mal aufklären was du mit der absolut unklaren Aussage "Zahlen zuordnen" überhaupt genau meinst!
Meinst du damit das die Zahlen einfach dem Alphabet aufsteigend zugeordnet werden sollen ?
A=1
B=2
C=3
..
Z=26
Oder brauchst du den ASCII Wert der Buchstaben ?
Für die erste Variante kannst du das hier nehmen:
Wenn es die ASCII Werte der Buchstaben sein sollen hier ein kurzes Powershell-Skript (geht zwar auch mit Batch, aber das können von mir aus andere machen.)
Rückwärts zum umwandeln des Byte-Arrayd in Text geht das dann ebenfalls mit PS so:
Gruß jodel32
du solltest hier erst mal aufklären was du mit der absolut unklaren Aussage "Zahlen zuordnen" überhaupt genau meinst!
Meinst du damit das die Zahlen einfach dem Alphabet aufsteigend zugeordnet werden sollen ?
A=1
B=2
C=3
..
Z=26
Oder brauchst du den ASCII Wert der Buchstaben ?
Für die erste Variante kannst du das hier nehmen:
@echo off & setlocal ENABLEDELAYEDEXPANSION
REM Zeichen die kodiert werden sollen (das Leerzeichen hat hier den Wert 0)
set "CHARS= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
REM Zeichenfolge abfragen
set /p string=Zeichen eingeben:
REM Länge des Strings ermitteln
call :strLength strLenString "%string%"
REM Länge der Zeichenliste ermitteln
call :strLength strLenChars "%CHARS%"
REM von den Längen der Strings für die Schleifen jeweils 1 abziehen
set /a strLenString-=1
set /a strLenChars-=1
echo Kodierung:
REM für jedes Zeichen im String ...
for /L %%a in (0,1,!strLenString!) do (
REM für jedes Zeichen finde den Offset in CHARS und gebe den Offset aus (das Leerzeichen hat hier den Offset 0)
for /L %%b in (0,1,!strLenChars!) do (
echo "!string:~%%a,1!"| findstr /c:"!CHARS:~%%b,1!">nul && echo %%b
)
)
REM Überspringe Makro und beende Skript
goto :eof
REM Makro zum ermitteln der Länge
:strLength
set "#=%~2"
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"
goto :eof
Wenn es die ASCII Werte der Buchstaben sein sollen hier ein kurzes Powershell-Skript (geht zwar auch mit Batch, aber das können von mir aus andere machen.)
$string = Read-Host "Zeichen eingeben"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($string)
write-host "Byte Array: $bytes"
($bytes |%{[char]$_}) -join ''
Moin jodel32,
Diese Anpassung wäre in deinem Batch-Schnipsel ja minimal.
Du brauchst ja nur die %CHAR%Variable so anpassen, dass das Zeichen "A" auf Pos. 65 und das kleine "a" auf Position 97, also dem jeweiligen ASCII-Wert gefunden wird.
Also sinngemäß
Grüße
Biber
P.S. Für deinen vorbildlich kommentierten Code male ich dir gleich noch eine kleine Sonne unter die Arbeit.
Oder wie immer das im 21. Jahrhundert gemacht wird...
Zitat von @114757:
Wenn es die ASCII Werte der Buchstaben sein sollen hier ein kurzes Powershell-Skript (geht zwar auch mit Batch, aber das können von mir aus andere machen.)
Wenn es die ASCII Werte der Buchstaben sein sollen hier ein kurzes Powershell-Skript (geht zwar auch mit Batch, aber das können von mir aus andere machen.)
Diese Anpassung wäre in deinem Batch-Schnipsel ja minimal.
Du brauchst ja nur die %CHAR%Variable so anpassen, dass das Zeichen "A" auf Pos. 65 und das kleine "a" auf Position 97, also dem jeweiligen ASCII-Wert gefunden wird.
Also sinngemäß
...
SET "CHARS=$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
REM ein Dummy-String von 64 Zeichen, damit "A" auf Position 65 gefunden wird
SET "CHARS=%CHARS%ABCDEFGHIJKLMNOPQRSTUVWXYZ"
REM das "Z" ist jetzt auf Pos 90, aber "a" soll auf Pos 97.
REM Deshalb noch mal eine Manipulation mit Dummyzeichen
SET "CHARS=%CHARS%$$$$$$abcdefghijklmnopqrstuvwxyz"
...
Grüße
Biber
P.S. Für deinen vorbildlich kommentierten Code male ich dir gleich noch eine kleine Sonne unter die Arbeit.
Oder wie immer das im 21. Jahrhundert gemacht wird...
Hi,
@Biber
Alternativ addiert man zur ermittelten Position im String jeweils den fixen Wert zum Offset in ASCII hinzu. Unter Beachtung der unterschiedlich Offsets von Groß- und Kleinbbuchstaben (65..90 und 97..122) natürlich.
fk
@Biber
Alternativ addiert man zur ermittelten Position im String jeweils den fixen Wert zum Offset in ASCII hinzu. Unter Beachtung der unterschiedlich Offsets von Groß- und Kleinbbuchstaben (65..90 und 97..122) natürlich.
fk