Binärcode

  • wie würdest du das leerzeichen einbaun?
    aber das mein ich nicht es müsste was geben so das string und integer herausgelesen werden und dann einzeld behandelt werden ^^
    ich hab mich nur gefragt ob das geht...weil bei diesem binärumwandler von ben newman treten bei den integer Zahlen auch fehler auf (aufgrund der Stringumwandlung)

  • Ich verstehe nicht was da für Fehler auftreten sollen? Erklär das mal bitte!

    Hier mal das mit der Leertaste

    [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 StringTrimLeft($sRet, 1)
    EndFunc

    [/autoit]

    Würde mich freuen, wenn du dich selbst mal auch ein bisschen bemühen würdest.


    Zitat von team2way

    ich hab mich nur gefragt ob das geht

    Alles geht.

    • Offizieller Beitrag

    weil bei diesem binärumwandler von ben newman treten bei den integer Zahlen auch fehler auf (aufgrund der Stringumwandlung)


    Womit sich die Katze in den Schwanz beißt - du erklärst einfach nicht was du willst!
    Also bitte mal ganz klar:
    - VORHER und
    - NACHHER
    Das kann doch so schwer nicht sein. ;)

  • Zitat von team2way

    es müsste was geben so das string und integer herausgelesen werden und dann einzeld behandelt werden

    Natürlich geht das, aber wie willst du die Integer behandeln??

    So könntst du Probleme mit den Ascii-Zeichen von 1 bis 9 bekommen:

    [autoit]

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

    [/autoit]
  • Zitat

    aber das mein ich nicht es müsste was geben so das string und integer herausgelesen werden und dann einzeld behandelt werden


    ich weiß nicht was man daran nicht verstehen kann .... und hier hab ich den fehler beschrieben:

    Zitat

    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


    es geht darum string und integer auf einmal und gleichsam zu übersetzen...

  • Probierst du überhaupt den Code, den ich poste :?:
    Bei 2 kommt seit Post 14 immer 00110010 (50) heraus !!!! UND DAS WIRD DOCH WOHL PASSEN, ODER !!

    Hier noch einmal das ganze:

    Mein letzter Nerv
    [autoit]

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

    [/autoit] [autoit][/autoit] [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 StringTrimLeft($sRet, 1)
    EndFunc
    ;===============================================================================
    ;
    ; 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]
  • Zitat

    UND DAS WIRD DOCH WOHL PASSEN, ODER !!


    nein das passt NICHT :D
    110010 (2) = 50 (10)
    nicht 2 (10)
    ==> 2 (10) = 000010

  • Du raubst mir den letzten Nerv und dann beim 100. Post schreibs du dann endlich was du willst. Du weißt hoffentlich, dass dieses Ergebnis dann falsch ist, da es ja Steuerzeichen mit Ascii 0 bis 9 gibt, aber mir jetzt egal. Hier:

    Spoiler anzeigen
    [autoit]

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

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

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

    [/autoit]


    :P

  • sry wenn ich dir den letzten nerv raub, aber wenn du selbst weißt das es falsch ist warum postest du es dann...
    kann man da jetzt auch text eingeben?

    • Offizieller Beitrag

    Abschließende Bemerkung:
    Bildliche gesprochen versuchst du aus Äpfeln und Birnen Marmelade zu kochen und verlangst, dass ohne Angabe des Inhalts das wieder in den Ausgangszustand versetzt wird. ==> Ergo: Nicht möglich. Wenn du nicht weißt ob der zuvor gewandelte Wert eine Zahl oder einen String repräsentiert hat, kannst du es auch nicht zurückwandeln.
    Wobei mir der Sinn des Ganzen nach wie vor verschlossen bleibt. Zum Verschlüsseln gibt es wirklich Sinnvolleres.

  • thx für diese antwort, dadurch wurde meine annahme bestätigt (es geht also nicht beides auf einmal)

    mfg team2way