Binärcode

  • hi leute,
    gibt es eine art funktion mit der man text und zahlen in Binärcode umwandeln kann?

    mfg team2way

  • Jo, zumindest für Zahlen...

    von Progandy:

    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _TranslateSystem
    ; Description:: Wandelt eine Zahl zwischen verschiedenen Zahlensystemen um.
    ; Parameter(s): $zahl - Die Zahl zum Umwandeln
    ; $OldSystem - [Optional] Das alte System (Default: 10)
    ; $NewSystem - [Optional] Das neue System (Default: 2)
    ; Requirement(s):
    ; Return Value(s): Success: Number in new format and @extended set to SystemBase
    ; Error: -1.#NAN or -1.#IND
    ; @error set to:
    ; 1 - Zahl nicht richtig formatiert
    ; 2 - neues System nicht im darstellbaren Bereich
    ; 3 - altes System nicht im darstellbaren Bereich
    ; 4 - Zahl enthält Zeichen, die nicht im System vorkommen
    ; Author(s): Prog@ndy; sd (VB-Code)
    ; VB source used from http://www.vbarchiv.net/tipps/details.php?id=1590
    ;
    ;===============================================================================
    ;
    Func _TranslateSystem($zahl, $OldSystem=10, $NewSystem = 2)
    Local $out ;' Ausgabevariable
    Local $temp ;' Temporäre Variable
    $OldSystem = Int($OldSystem)
    $NewSystem = Int($NewSystem)
    Select
    Case Not StringRegExp($zahl,"\A[0-9a-zA-Z]+\Z")
    Return SetError(2,0,"-1.#NAN")
    Case $NewSystem < 2 Or $NewSystem > 62
    Return SetError(2,0,"-1.#IND")
    Case $OldSystem < 2 Or $OldSystem > 62
    Return SetError(3,0,"-1.#IND")
    EndSelect
    ;' Zeichen der Zahlensysteme ( bis Hexadezimalsystem )
    Local $chrsys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    If $OldSystem <> 10 Then
    Local $CaseSense = ($OldSystem > 36)
    Local $ziffern = StringSplit($zahl,""), $nummer
    $zahl = 0
    For $i = 1 To $ziffern[0]
    $nummer = StringInStr($chrsys,$ziffern[$i],$CaseSense,1)
    If $nummer > 0 Then $zahl += ($nummer-1)*($OldSystem^($ziffern[0]-$i))
    If $nummer > $OldSystem Then Return SetError(4,0,"1.#NAN")
    Next
    EndIf

    ;' Solange bis Zahl = 0
    While $zahl <> 0
    ;' Stelle der Zahl ermitteln
    $temp = Mod($zahl, $NewSystem )
    ;' Zahl anhängen
    $out = StringMid($chrsys, $temp + 1, 1) & $out
    ;' Integerdivision
    $zahl = Int($zahl / $NewSystem)
    Wend
    SetExtended($NewSystem)
    Return $out
    EndFunc

    [/autoit]

    lgE

  • Du könntest dir auch die Ascii-Zahl für jeden einzelnen Buchstaben wiedergeben lassen und die mit der Funktion oben umrechnen.

    $Num=Asc($Buchstabe)

  • ok...aber es gibt keine richtige funktion oder so also man müsste dann alles neu schreiben...

  • Also so ungefähr?
    Hab zwar keine Ahnung wozu man das braucht, aber bitte.

    Spoiler anzeigen
    [autoit]

    MsgBox(0,"", __String2Binary('bb'))

    [/autoit] [autoit][/autoit] [autoit]

    Func __String2Binary($sString)
    ;funkey
    Local $sRet, $aString = StringRegExp($sString, '.?', 3)
    For $i = 0 To UBound($aString) -2
    $sRet &= _TranslateSystem(Asc($aString[$i]), 16)
    Next
    Return $sRet
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _TranslateSystem
    ; Description:: Wandelt eine Zahl zwischen verschiedenen Zahlensystemen um.
    ; Parameter(s): $zahl - Die Zahl zum Umwandeln
    ; $OldSystem - [Optional] Das alte System (Default: 10)
    ; $NewSystem - [Optional] Das neue System (Default: 2)
    ; Requirement(s):
    ; Return Value(s): Success: Number in new format and @extended set to SystemBase
    ; Error: -1.#NAN or -1.#IND
    ; @error set to:
    ; 1 - Zahl nicht richtig formatiert
    ; 2 - neues System nicht im darstellbaren Bereich
    ; 3 - altes System nicht im darstellbaren Bereich
    ; 4 - Zahl enthält Zeichen, die nicht im System vorkommen
    ; Author(s): Prog@ndy; sd (VB-Code)
    ; VB source used from http://www.vbarchiv.net/tipps/details.php?id=1590
    ;
    ;===============================================================================
    ;
    Func _TranslateSystem($zahl, $OldSystem=10, $NewSystem = 2)
    Local $out ;' Ausgabevariable
    Local $temp ;' Temporäre Variable
    $OldSystem = Int($OldSystem)
    $NewSystem = Int($NewSystem)
    Select
    Case Not StringRegExp($zahl,"\A[0-9a-zA-Z]+\Z")
    Return SetError(2,0,"-1.#NAN")
    Case $NewSystem < 2 Or $NewSystem > 62
    Return SetError(2,0,"-1.#IND")
    Case $OldSystem < 2 Or $OldSystem > 62
    Return SetError(3,0,"-1.#IND")
    EndSelect
    ;' Zeichen der Zahlensysteme ( bis Hexadezimalsystem )
    Local $chrsys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    If $OldSystem <> 10 Then
    Local $CaseSense = ($OldSystem > 36)
    Local $ziffern = StringSplit($zahl,""), $nummer
    $zahl = 0
    For $i = 1 To $ziffern[0]
    $nummer = StringInStr($chrsys,$ziffern[$i],$CaseSense,1)
    If $nummer > 0 Then $zahl += ($nummer-1)*($OldSystem^($ziffern[0]-$i))
    If $nummer > $OldSystem Then Return SetError(4,0,"1.#NAN")
    Next
    EndIf

    ;' Solange bis Zahl = 0
    While $zahl <> 0
    ;' Stelle der Zahl ermitteln
    $temp = Mod($zahl, $NewSystem )
    ;' Zahl anhängen
    $out = StringMid($chrsys, $temp + 1, 1) & $out
    ;' Integerdivision
    $zahl = Int($zahl / $NewSystem)
    Wend
    SetExtended($NewSystem)
    Return $out
    EndFunc

    [/autoit]
  • thx
    die zahlen werden hier allerdings nicht mehr richtig übersetzt, warscheinlich weil er diese sting umwandlung macht...?

    zB 2 = 1010000 ==> 1010000 ist aber normalerweise 16+64 = 80

    also das gilt dann nur für text

    Einmal editiert, zuletzt von team2way (5. April 2009 um 14:19)

  • Hatte noch eine Denkfehler drin, sorry.

    [autoit]

    Func __String2Binary($sString)
    ;funkey
    Local $sRet, $aString = StringRegExp($sString, '.?', 3)
    For $i = 0 To UBound($aString) -2
    $sRet &= StringFormat('%008s', _TranslateSystem(Asc($aString[$i])))
    Next
    Return $sRet
    EndFunc

    [/autoit]
  • Zitat

    Du hast noch immer nicht gesagt, was du vor hast. Wie sollen wir dir dann helfen.


    lol ich sag doch die ganze zeit was ich vor hab...es geht um das umwandeln von text+zahlen in binärcode und andersrum
    schaut euch mal das hier an:
    http://www.ben-newman.de/com/bin.php

    • Offizieller Beitrag

    ol ich sag doch die ganze zeit was ich vor hab...es geht um das umwandeln von text+zahlen in binärcode und andersrum


    Das ist in etwa dasselbe, als ob du sagst, ich will 'ne GUI erstellen ;)
    Gib bitte Bsp. an
    - Ausgangsstatus (Text)
    - gewünschter Zielstatus