nochma Bitrotation (und Strings)
- YoshiGreen
- Beiträge: 11
- Registriert: 08.09.2004 12:59
- Wohnort: Layer 12
- Kontaktdaten:
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Code: Alles auswählen
Debug RSet(Bin(4507),32,"0")
Debug Str(%1000110011011)
manchmal weiß auch ich etwas, ich erinnere mich bloß schlecht daran
- YoshiGreen
- Beiträge: 11
- Registriert: 08.09.2004 12:59
- Wohnort: Layer 12
- Kontaktdaten:
@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?!
- 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?!
No matter where you are, everyone is always connected!
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)
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.
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.
> - 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
> -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

Re: nochma Bitrotation (und Strings)
Mit Prozeduren geht's so:YoshiGreen hat geschrieben:ich wollte mal fragen, wie man ne Bitrotation durchführen kann. Inner Hilfe steht ja, wie man shiftet, aber rotieren -> nix ;_;
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
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck