Binär Übersetzer per Batch (Vbs)
Hallo zusammen,
ist es möglich, eine Batch Datei zu erstellen, die folgendes tut:
in Variable "tzv" befindet sich ein Text (vielleicht auch ü,ä,ö,ß,é,è) (z.B.: "Herr Meier schießt mit gewählten Schüßen auf André")
diese soll in Binär codiert und ausgegeben werden.
Dieser Binärcode soll dann in HEX konvertiert und zuletzt nach Decimal codiert werden.
Außerdem sollte dieser Prozess auch rückgängig gemacht werden können (Decimal -> HEX -> Binär ->Text)
Ist dies möglich oder nur Teile der Frage?
Vielen Dank im Vorraus,
Alme123
ist es möglich, eine Batch Datei zu erstellen, die folgendes tut:
in Variable "tzv" befindet sich ein Text (vielleicht auch ü,ä,ö,ß,é,è) (z.B.: "Herr Meier schießt mit gewählten Schüßen auf André")
diese soll in Binär codiert und ausgegeben werden.
Dieser Binärcode soll dann in HEX konvertiert und zuletzt nach Decimal codiert werden.
Außerdem sollte dieser Prozess auch rückgängig gemacht werden können (Decimal -> HEX -> Binär ->Text)
Ist dies möglich oder nur Teile der Frage?
Vielen Dank im Vorraus,
Alme123
Please also mark the comments that contributed to the solution of the article
Content-ID: 211108
Url: https://administrator.de/contentid/211108
Printed on: October 9, 2024 at 14:10 o'clock
9 Comments
Latest comment
Hallo Alme123!
Hier mal in VBS von (Ansi)-Text > Bin > Hex > Dez:
Gruß Dieter
Hier mal in VBS von (Ansi)-Text > Bin > Hex > Dez:
Const strFile = "C:\Test\Conv.txt"
Const strText = "Herr Meier schießt mit gewählten Schüssen auf André"
For i = 1 To Len(strText)
iByte = CByte(Asc(Mid(strText, i, 1)))
strHex = Right("0" & Hex(iByte), 2)
strDec = Right("00" & iByte, 3)
strBin = ""
For b = 7 To 0 Step -1
If iByte And 2 ^ b Then
strBin = strBin & 1
Else
strBin = strBin & 0
End If
Next
strHexText = strHexText & strHex
strDecText = strDecText & strDec
strBinText = strBinText & strBin
Next
With CreateObject("Scripting.FileSystemObject").CreateTextFile(strFile)
.WriteLine "Bin 8-stellig: " & vbNewLine & strBinText & vbNewLine
.WriteLine "Hex 2-stellig: " & vbNewLine & strHexText & vbNewLine
.WriteLine "Dez 3-stellig: " & vbNewLine & strDecText
.Close
End with
Gruß Dieter
Hallo Alme!
Worin der Sinn von 'erst nach Bin, dann nach Hex und danach in Dez' liegen soll, hast Du ja nicht erklärt und mir fällt dazu auch irgendwie nix ein
Die Rückkonvertierung habe ich bewusst weggelassen, damit andere auch noch was zum spielen haben. Ist eigentlich recht Simpel und Du könntest Dir ja auch etwas Mühe geben und zumindest mal einen Ansatz versuchen...
Gruß Dieter
dein Script funktioniert; aber nicht so, wie ich es meinte:
War ja auch nur mal ein erster AnsatzWorin der Sinn von 'erst nach Bin, dann nach Hex und danach in Dez' liegen soll, hast Du ja nicht erklärt und mir fällt dazu auch irgendwie nix ein
Die Rückkonvertierung habe ich bewusst weggelassen, damit andere auch noch was zum spielen haben. Ist eigentlich recht Simpel und Du könntest Dir ja auch etwas Mühe geben und zumindest mal einen Ansatz versuchen...
Gruß Dieter
Hallo Alme123,
hier noch etwas mehr Input:
(In Zeile 1 noch den Pfad zur Textdatei angeben)
@76109
deine Umwandlung in Binär bringt bei mir keine korrekten Ergebnisse:
Grüße Uwe
hier noch etwas mehr Input:
(In Zeile 1 noch den Pfad zur Textdatei angeben)
FILEPATH = "C:\DeineTextDatei.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objText = objFSO.OpenTextFile(FILEPATH, 1)
strText = objText.ReadAll
objText.Close()
'----------------Umwandlungen---------------------
'String zu Binär
sBinary = StringToBinary(strText)
'String zu Hex
sHex = StringToHex(strText)
'String zu Dezimal
sDec = StringToDec(strText)
'Binär zu String
sString = BinaryToString(sBinary)
'-------------------------------------------------
'Ausgabe
MsgBox "Binärwerte des Strings: " & vbNewLine & sBinary
MsgBox "Hexwerte des Strings: " & vbNewLine & sHex
MsgBox "Dezimalwerte des Strings: " & vbNewLine & sDec
MsgBox "Umwandlung der Binärwerte zurück in den Text: " & vbNewLine & sString
'-------
'------ Funktionen ------------
Function StringToDec(sText)
sDec = ""
aByte = StringToByteArray(sText)
For Each b In aByte
sDec = sDec & b
Next
StringToDec = sDec
End Function
Function StringToByteArray(sText)
Dim iByte()
For i = 1 To Len(sText)
ReDim Preserve iByte(i)
iByte(i-1) = CByte(Asc(Mid(sText,i,1)))
Next
StringToByteArray = iByte
End Function
Function ByteArrayToString(aByte)
sString = ""
For i = 0 To UBound(aByte)
sString = sString & Chr(CStr("&h" & Hex(aByte(i))))
Next
ByteArrayToString = sString
End Function
Function StringToHex(sText)
sHex = ""
For i = 1 To Len(sText)
sHex = sHex & Right("0" & Hex(CByte(Asc(Mid(sText,i,1)))),2)
Next
StringToHex = sHex
End Function
Function HexToString(sHex)
sString = ""
For i = 1 To Len(sHex) Step 2
sString = sString & Chr(CStr("&h" & Mid(sHex,i,2)))
Next
HexToString = sString
End Function
Function StringToBinary(sText)
sBinary = ""
For i = 1 To Len(sText)
iByte = CByte(Asc(Mid(sText, i, 1)))
For b = 7 To 0 Step -1
If iByte >= 2 ^ b Then
sBinary = sBinary & "1"
iByte = iByte - (2 ^ b)
Else
sBinary = sBinary & "0"
End If
Next
Next
StringToBinary = sBinary
End Function
Function BinaryToString(sBinary)
sString = ""
For i = 1 To Len(sBinary) Step 8
sByte = Mid(sBinary,i,8)
iByte = 0
For b = 7 To 0 Step - 1
If Mid(sByte,8-b,1) = 1 Then
iByte = iByte + (2^b)
End If
Next
sString = sString & Chr(CStr("&h" & Hex(iByte)))
Next
BinaryToString = sString
End Function
'----------------------
@76109
Grüße Uwe
Hallo colinardo!
Hier noch mal das Ganze:
Gruß Dieter
[edit] hab mal vorsichthalber die '2 ^ b' in Klammer gesetzt [/edit]
deine Umwandlung in Binär bringt bei mir keine korrekten Ergebnisse:
Kann ich jetzt nicht so ganz nachvollziehen, zumal bei mir beide Richtungen funktionieren?Hier noch mal das Ganze:
Const strFileBin = "C:\Test\Bin.txt"
Const strFileHex = "C:\Test\Hex.txt"
Const strFileDec = "C:\Test\Dec.txt"
Const strInput = "Herr Meier schießt mit gewählten Schüssen auf André"
'Text To Bin, Dez, Hex________________________________________________
For i = 1 To Len(strInput)
iByte = CByte(Asc(Mid(strInput, i, 1)))
strHex = Right("0" & Hex(iByte), 2)
strDec = Right("00" & iByte, 3)
strBin = ""
For b = 7 To 0 Step -1
If iByte And (2 ^ b) Then
strBin = strBin & 1
Else
strBin = strBin & 0
End If
Next
strHexText = strHexText & strHex
strDecText = strDecText & strDec
strBinText = strBinText & strBin
Next
With CreateObject("Scripting.FileSystemObject")
With .CreateTextFile(strFileBin)
.Write strBinText: .Close
End With
With .CreateTextFile(strFileHex)
.Write strHexText: .Close
End With
With .CreateTextFile(strFileDec)
.Write strDecText: .Close
End With
End With
'Bin To Text__________________________________________________________
With CreateObject("Scripting.FileSystemObject")
strBinText = .OpenTextFile(strFileBin).ReadAll
End With
strText = ""
For i = 1 To Len(strBinText) Step 8
strBin = StrReverse(Mid(strBinText, i, 8))
iByte = 0
For b = 0 To 7
If Mid(strBin, b + 1, 1) = 1 Then
iByte = iByte Or (2 ^ b)
End If
Next
strText = strText & Chr(iByte)
Next
MsgBox strText,,"BinToText..."
'Dec To Text__________________________________________________________
With CreateObject("Scripting.FileSystemObject")
strDecText = .OpenTextFile(strFileDec).ReadAll
End With
strText = ""
For i = 1 To Len(strDecText) Step 3
strText = strText & Chr(CByte(Mid(strDecText, i, 3)))
Next
MsgBox strText,,"DecToText..."
'Hex To Text__________________________________________________________
With CreateObject("Scripting.FileSystemObject")
strHexText = .OpenTextFile(strFileHex).ReadAll
End With
strText = ""
For i = 1 To Len(strHexText) Step 2
strText = strText & Chr(CByte("&H" & Mid(strHexText, i, 2)))
Next
MsgBox strText,,"HexToText..."
Gruß Dieter
[edit] hab mal vorsichthalber die '2 ^ b' in Klammer gesetzt [/edit]
Hallo Uwe!
Seltsam, seltsam... Konnte nämlich nix verwerfliches an der Syntax erkennen
Gruß Dieter
Seltsam, seltsam... Konnte nämlich nix verwerfliches an der Syntax erkennen
Gruß Dieter
Hallo Uwe!
Hab's probiert, kommt bei mir knapp daneben "H=00101000" raus
Gruß Dieter
Probier mal b ^ 2 anstatt 2 ^ b dann kommt es zu dem Phänomen
Nö, hatte diesbezüglich keine Änderung vorgenommen. Das einzige, was ich gestern noch geändert hatte, war eine Korrektur von dem Wort 'Schüßen' nach 'Schüssen'Hab's probiert, kommt bei mir knapp daneben "H=00101000" raus
Gruß Dieter