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)
Binärcode
-
- [ offen ]
-
team2way -
4. April 2009 um 23:09 -
Geschlossen -
Erledigt
-
-
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)
[/autoit]
;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)
EndFuncWürde mich freuen, wenn du dich selbst mal auch ein bisschen bemühen würdest.
Zitat von team2wayich 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)
[/autoit]
;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 -
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:Zitatdie 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)
[/autoit]
;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 -
Zitat
UND DAS WIRD DOCH WOHL PASSEN, ODER !!
nein das passt NICHT
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)
[/autoit]
;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
-
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? -
Ich sag nichts mehr zu dem Thema.
-
- 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
-