Seite 3 von 3

Verfasst: 10.09.2004 22:01
von YoshiGreen
öhm ich meinte eigentlich, wie man z.B. 00000001 wieder in 1 umwandelt kann...

Verfasst: 10.09.2004 22:12
von Falko

Code: Alles auswählen

Debug Bin(00000001)
oder wie war die Frage gemeint?

MfG Falko

Verfasst: 11.09.2004 10:58
von bvc

Code: Alles auswählen

Debug RSet(Bin(4507),32,"0")

Debug Str(%1000110011011)
Ich denke, das was gemeint

Verfasst: 11.09.2004 22:58
von YoshiGreen
@bvc: öhm ich glaube, so in etwa war das gemeint. Also ich suche nach folgenden Befehlen:

- einen, der binär Zahlen wieder in dezimal Zahlen umwandelt (anders herum wird ja Bin() verwendet)

-einen der Hexdezimalzahlen wieder in dezimal Zahlen umwandelt (hier ist der Gegenbefehl ja Hex() )

-und eine Möglichkeit Hexdezimalzahlen direkt in binäre umzuwandeln sowie andersherum...

gibets dafür ne Möglichkeit?!

Verfasst: 12.09.2004 00:04
von SoS
dann teste mal folgendes

Code: Alles auswählen

a=$ff
b=%010101
Debug a
Debug Hex(a)
Debug Bin(a)
Debug b
Debug Hex(b)
Debug Bin(b)

Verfasst: 12.09.2004 00:18
von Ynnus
Ich schätze mal, er sucht eine Möglichkeit, einen String welcher einen Binärwert oder einen Hexwert enthält, wieder in eine Variable mit Dezimalwert zu wandeln. Das geht imo nicht so ohne weiteres.

In dem aufgeführten Beispiel a=$ff wird ja auch nicht der String FF abgespeichert, sondern der Wert 0, der dazu gehört. Somit funktioniert zwar das beispiel, aber schreib anstelle von a=$ff mal a.s = hex(0), dann geht es nicht mehr, obwohl dann a den selben Wert enhält, nur eben als Hex-String und nicht mehr als Zahl...

Beispiel: Angenommen man wandelt im Programm direkt einen Wert per hex(46) in den String "2E" um. Dann hat man dann einen String welcher diesen Wert als TEXT enthält. Nun kann man aber nicht einfach variable = string schreiben. Auch variable = val(string) geht nicht. Also hat man hier das Problem, einen String welcher einen Hex-Wert enthält, wieder zu diesem Zahlenwert zu wandeln. Und das ist sein problem, denk ich mir.

Verfasst: 12.09.2004 01:09
von SoS
> - einen, der binär Zahlen wieder in dezimal Zahlen umwandelt (anders herum wird ja Bin() verwendet)
> -einen der Hexdezimalzahlen wieder in dezimal Zahlen umwandelt (hier ist der Gegenbefehl ja Hex() )
> -und eine Möglichkeit Hexdezimalzahlen direkt in binäre umzuwandeln sowie andersherum...

Dann muss er seine Fragen anders formulieren,Hellseher bin ich (noch) nicht :lol:

Re: nochma Bitrotation (und Strings)

Verfasst: 25.09.2004 13:23
von Danilo
YoshiGreen hat geschrieben:ich wollte mal fragen, wie man ne Bitrotation durchführen kann. Inner Hilfe steht ja, wie man shiftet, aber rotieren -> nix ;_;
Mit Prozeduren geht's so:

Code: Alles auswählen

;
; by Danilo, 15.12.2003 - english chat
;
Procedure RotL(num,count) ; rotate left
  If count>0 And count<32
    !MOV dword ECX,[ESP+4]
    !ROL dword [ESP],cl
  EndIf
  ProcedureReturn num
EndProcedure

Procedure RotR(num,count) ; rotate right
  If count>0 And count<32
    !MOV dword ECX,[ESP+4]
    !ROR dword [ESP],cl
  EndIf
  ProcedureReturn num
EndProcedure

Procedure SHR(num,count) ; unsigned shift right
  If count>0 And count<32
    !MOV dword ECX,[ESP+4]
    !SHR dword [ESP],cl
  EndIf
  ProcedureReturn num
EndProcedure

Procedure SHL(num,count) ; unsigned shift left
  If count>0 And count<32
    !MOV dword ECX,[ESP+4]
    !SHL dword [ESP],cl
  EndIf
  ProcedureReturn num
EndProcedure


For a = 0 To 31
  Debug RSet(Bin(RotL(%1000100000000000,a)),32,"0")
Next a

For a = 0 To 31
  Debug RSet(Bin(RotR(%100010000000000,a)),32,"0")
Next a

Debug "---"

For a = 0 To 31
  Debug RSet(Bin(SHL(%1,a)),32,"0")
Next a

For a = 0 To 31
  Debug RSet(Bin(SHR($80000000,a)),32,"0")
Next a