numsys.bmx
Übersicht

SebeBetreff: numsys.bmx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab hier mal ein kleines Modul für BlitzMax geschrieben. Mit diesem Modul lassen sich Zahlen folgender Systeme kreuz- und quer umwandeln: Binär-, Oktal-, Dezimal- und Hexadezimalsystem.
Code: Code: [AUSKLAPPEN] Strict Rem bbdoc: NumSys End Rem Module infernalsoftware.numsys ModuleInfo "Version: 1.00" ModuleInfo "Author: Sebastian Erben" ModuleInfo "License: Lesser GNU Public License" ModuleInfo "Copyright: Infernal Software" Import BRL.Retro 'Binärumwandlungen Rem bbdoc: Wandelt eine Binärzahl in eine Oktalzahl um returns: Einen Stringwert, der die Oktalzahl enthält about: Syntax -> Oktalwert:String = b2o$(Binärwert$) End Rem Function b2o:String(binaryvalue:String) Return d2o$(b2d%(binaryvalue$)) EndFunction Rem bbdoc: Wandelt eine Binärzahl in eine Dezimalzahl um returns: Einen Integerwert, der die Dezimalzahl enthält about: Syntax -> Dezimalwert:Int = b2d%(Binärwert$) End Rem Function b2d:Int(binaryvalue:String) Local castnumber:Int = 0 Local decimalvalue:Int = 0 For Local counter:Int = 0 To Len(binaryvalue$) castnumber% = Mid(binaryvalue$, counter% + 1, 1).toint() decimalvalue%:+ castnumber * (2 ^ (Len(binaryvalue$) - counter%)) Next Return decimalvalue% EndFunction Rem bbdoc: Wandelt eine Binärzahl in eine Hexadezimalzahl um returns: Einen Stringwert, der die Hexadezimalzahl enthält about: Syntax -> Hexadezimalwert:String = b2h$(Binärwert$) End Rem Function b2h:String(binaryvalue:String) Return d2h$(b2d(binaryvalue$)) EndFunction 'Oktalumwandlungen Rem bbdoc: Wandelt eine Oktalzahl in eine Binärzahl um returns: Einen Stringwert, der die Binärzahl enthält about: Syntax -> Binärwert:String = o2b$(Oktalwert$) End Rem Function o2b:String(octalvalue:String) Return d2b$(o2d%(octalvalue$)) EndFunction Rem bbdoc: Wandelt eine Oktalzahl in eine Dezimalzahl um returns: Einen Integerwert, der die Dezimalzahl enthält about: Syntax -> Dezimalwert:Int = o2d%(Oktalwert$) End Rem Function o2d:Int(octalvalue:String) Local castnum:Int = 0 Local decimalvalue:Int = 0 For Local counter:Int = 1 To Len(octalvalue$) castnum% = Mid(octalvalue$, counter%, 1).toint() decimalvalue%:+ castnum% * (8 ^ (Len(octalvalue$) - counter%)) Next Return decimalvalue% EndFunction Rem bbdoc: Wandelt eine Oktalzahl in eine Hexadezimalzahl um returns: Einen Stringwert, der die Hexadezimalzahl enthält about: Syntax -> Hexadezimalwert:String = o2h$(Oktalwert$) End Rem Function o2h:String(octalvalue:String) Return d2h$(o2d%(octalvalue$)) EndFunction 'Dezimalumwandlungen Rem bbdoc: Wandelt eine Dezimalzahl in eine Binärzahl um returns: Einen Stringwert, der die Binärzahl enthält about: Syntax -> Binärwert:String = d2b$(Dezimalwert%) End Rem Function d2b:String(decimalvalue:Int) Return prove4zeros$(Bin$(decimalvalue:Int)) EndFunction Rem bbdoc: Wandelt eine Dezimalzahl in eine Oktalzahl um returns: Einen Stringwert, der die Oktalzahl enthält about: Syntax -> Oktalwert:String = d2o$(Dezimalwert%) End Rem Function d2o:String(decimalvalue:Int) Local octalvalue$ = "" Repeat octalvalue$ = (decimalvalue% Mod 8) + octalvalue$ decimalvalue% = decimalvalue% / 8 Until decimalvalue% Mod 8 = 0 And decimalvalue% / 8 = 0 Return prove4zeros$(octalvalue$) EndFunction Rem bbdoc: Wandelt eine Dezimalzahl in eine Hexadezimalzahl um returns: Einen Stringwert, der die Hexadezimalzahl enthält about: Syntax -> Hexadezimalwert:String = d2h$(Dezimalwert%) End Rem Function d2h:String(decimalvalue:Int) Return prove4zeros$(Hex$(decimalvalue:Int)) EndFunction 'Hexadezimalumwandlungen Rem bbdoc: Wandelt eine Hexadezimalzahl in eine Binärzahl um returns: Einen Stringwert, der die Binärzahl enthält about: Syntax -> Binärwert:String = h2b$(Hexadezimalwert%) End Rem Function h2b:String(hexadecimalvalue:String) Return d2b$(h2d%(hexadecimalvalue$)) EndFunction Rem bbdoc: Wandelt eine Hexadezimalzahl in eine Oktalzahl um returns: Einen Stringwert, der die Oktalzahl enthält about: Syntax -> Oktalwert:String = h2o$(Hexadezimalwert%) End Rem Function h2o:String(hexadecimalvalue:String) Return d2o$(h2d%(hexadecimalvalue$)) EndFunction Rem bbdoc: Wandelt eine Hexadezimalzahl in eine Dezimalzahl um returns: Einen Integerwert, der die Dezimalzahl enthält about: Syntax -> Dezimalwert:Int = h2d$(Hexadezimalwert%) End Rem Function h2d:Int(hexadecimalvalue:String) Local castchar:String = "" Local castnum:Byte = 0 Local decimalvalue:Int = 0 For Local counter:Int = 1 To Len(hexadecimalvalue$) castchar$ = Mid(hexadecimalvalue$, counter%, 1) Select castchar$ Case "A" castnum:Byte = 10 Case "B" castnum:Byte = 11 Case "C" castnum:Byte = 12 Case "D" castnum:Byte = 13 Case "E" castnum:Byte = 14 Case "F" castnum:Byte = 15 Default castnum:Byte = castchar$.toint() End Select decimalvalue%:+ castnum:Byte * 16 ^ (Len(hexadecimalvalue$) - counter%) Next Return decimalvalue% EndFunction Function prove4zeros:String(number2prove:String) Local tempchar:String = "" Local counter:Int = 1 Local endflag:Byte = 0 Repeat tempchar$ = Mid(number2prove$, counter%, 1) If tempchar$ = "0" counter%:+ 1 Else endflag = 1 EndIf Until endflag = 1 number2prove$ = number2prove$[(counter% - 1)..] Return number2prove$ EndFunction Ausserdem werden überflüssige Nullen am Anfang abgeschnitten, ich hoffe ich schaut's euch mal an. Kritik jeder Art ist erwünscht ![]() F.S.: Hier ist noch ein kleiner Beispielcode zum Testen der Funktionen: Code: Code: [AUSKLAPPEN] Strict Global DeziInput:Int = 0 Global RestInput:String = "" RestInput$ = Input("Binärzahl eingeben: ") Print(b2o$(RestInput$)) Print(b2d%(RestInput$)) Print(b2h$(RestInput$)) RestInput$ = Input("Oktalzahl eingeben: ") Print(o2b$(RestInput$)) Print(o2d%(RestInput$)) Print(o2h$(RestInput$)) DeziInput% = Input("Dezimalzahl eingeben: ").toint() Print(d2b$(DeziInput%)) Print(d2o$(DeziInput%)) Print(d2h$(DeziInput%)) RestInput$ = Input("Hexadezimalzahl eingeben: ") Print(h2b$(RestInput$)) Print(h2o$(RestInput$)) Print(h2d%(RestInput$)) |
||
noir |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das hättest du auch hier noch dazu posten können: http://wp1002880.wp004.webpack...php?t=8696
sonst verläuft man sich im code archiv noch irgendwann |
||
Sebe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sry, hatte ganz vergessen, dass das hier auch noch rumgeistert... 8)
Ich achte das nächste mal besser drauf, sry... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group