Aktuelle Zeit: 21.10.2019 12:27

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 10:01 
Offline

Registriert: 31.12.2009 11:58
Hallo, guten Tag.

Wie kann man eine Decimalzahl (56789) in Hex zum Printen bitte umwandeln?
Nicht mit Purebasic-Umwandlungsbefehlen sondern zu Fuss....

Danke.
Gruss


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 10:44 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Wenn du selber umrechnen willst, hier zwei Wikipedia-Seiten, die dir verständlich die jeweiligen Zahlensysteme zeigen:
Dezimalsystem (Basis 10): https://de.wikipedia.org/wiki/Dezimalsystem
Hexadezimalsystem (Basis 16): https://de.wikipedia.org/wiki/Hexadezimalsystem

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:06 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
So zum Beispiel:
Code:
Procedure.s hexhex(value.i)
   Protected result.s = ""
   
   While value
      ; Und wenn du lieber A-F statt a-f hast, dann einfach das 'a' durch ein 'A' ersetzen.
      result = Chr('0' + (value % 16) + (value % 16) / 10 * ('a' - '0' - 10)) + result
      value / 16
   Wend
   
   ProcedureReturn result
EndProcedure

Debug hexhex(56789)

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:11 
Offline

Registriert: 18.08.2017 09:35
Danke für den Code NicTheQuick, ist immer interessant, wie der Code ungefähr intern abläuft.
Code:
Procedure.s hexhex(value.i)
Bild

_________________
Bild


Zuletzt geändert von ¯\_(ツ)_/¯ am 18.09.2018 11:11, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:11 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
NicTheQuick hat geschrieben:
Code:
Debug hexhex(56789)

sozusagen eine Bibi Blocksberg - Prozedur
Bild

_________________
"A user interface is like a joke. If you have to explain it, it’s not that good." (Martin Leblanc)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:12 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Da hatten zwei User den gleichen Gedanken. :lol:

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:14 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
:lol:
Schön, dass es euch gefällt. Ich hab zur endgültigen Verwirrung noch das Bool() entfernt, damit man nicht mehr so gut durchblickt und mehr Fragen stellen kann.

Wenn das ganze schnell sein soll, dann würde ich es aber anders machen. Wichtig war mir erst mal, dass es funktioniert.

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 11:25 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Ich hab mal vor Ewigkeiten, oder genauer gesagt im Oktober 2014 eine Procedure geschrieben, die von jeder Basis in jede andere konvertieren kann, und dabei sogar gebrochene Zahlen kann.
Heute würde ich das wieder anders machen, mit mehr Pointern, aber es funktioniert immer noch. Hier der unveränderte Originalcode:
Code:
Procedure.s Base_Convert(Value.s, InBase.l = 10, OutBase.l = 2, nbDecimals.l = 100)
   Protected p.l, *c.Character, left.s, l.l, lout.s, Mod.l, out.s, rout.s, right.s, a.l
   
   *c = @Value
   While *c\c
      Select *c\c
         Case '0' To '9' : *c\c - '0' + 1
         Case 'a' To 'z' : *c\c - 'a' + 11
         Case 'A' To 'Z' : *c\c - 'A' + 11
         Case '.' ;do nothing
         Default : *c\c = 1
      EndSelect
      *c + SizeOf(Character)
   Wend
   
   p = FindString(Value, ".", 1)
   If p
      left = Left(Value, p - 1)
      right = Mid(Value, p + 1, Len(Value) - p)
   Else
      p = Len(Value)
      left = Value
      right = ""
   EndIf
   
   If left ;Vorkommateil
      While left <> ""
         Mod = 0 : *c = @left : out = ""
         While *c\c
            Mod = Mod * InBase + *c\c - 1
            l = Mod / OutBase
            If l Or out
               out + Chr(l + 1)
            EndIf
            Mod - (l * OutBase)
            
            *c + SizeOf(Character)
         Wend
         
         left = out
         lout = Chr(Mod + 1) + lout
      Wend
   Else
      lout = Chr(1)
   EndIf
   
   If right ;Nachkommateil
      a = 0
      p = Len(right)
      While right <> Chr(1) And a < nbDecimals
         *c = @right + (p - 1) * SizeOf(Character)
         p = 0 : Mod = 0 : out = ""
         While *c >= @right
            Mod + (*c\c - 1) * OutBase
            out = Chr((Mod % InBase) + 1) + out
            Mod / InBase
            *c - SizeOf(Character)
            p + 1
         Wend
         
         right = out
         rout + Chr(Mod + 1)
         a + 1
      Wend
   EndIf
   
   If rout : out = lout + "." + rout : Else : out = lout : EndIf
   
   *c = @out
   While *c\c
      Select *c\c
         Case 1 To 10 : *c\c + '0' - 1
         Case 11 To 36 : *c\c + 'A' - 11
         Case '.' ;do nothing
         Default : *c\c = '?'
      EndSelect
      *c + SizeOf(Character)
   Wend
   
   ProcedureReturn out
EndProcedure

Define unkomprimiert.s = "12345678901234567890"
Define komprimiert.s = Base_Convert(unkomprimiert, 10, 36, 100)
Define dekomprimiert.s = Base_Convert(komprimiert, 36, 10, 100)

Debug "Unkomprimiert: " + unkomprimiert
Debug "Komprimiert: " + komprimiert
Debug "Dekomprimiert: " + dekomprimiert

Define s.s
Debug "Beispiel für 10 -> 2 und zurück"
s = Base_Convert("3.1415926535897932384626433832795028841971693993", 10, 2, 100)
Debug s
Debug Base_Convert(s, 2, 10, 100)
Debug "3.1415926535897932384626433832795028841971693993 (Original)"
Debug "Beispiel für 10 -> 36 und zurück"
s = Base_Convert("3.1415926535897932384626433832795028841971693993", 10, 36, 100)
Debug s
Debug Base_Convert(s, 36, 10, 100)
Debug "3.1415926535897932384626433832795028841971693993 (Original)"

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 13:26 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Jetzt fehlt eigentlich nur noch ein Video aus Deinem Bastelkeller, wie Du das Ganze umwandelst zu (Aachener) Printen. Bin schon sehr gespannt. :mrgreen:

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eine decimalzahl in Hex umwandeln zu Printen (zu Fuss)
BeitragVerfasst: 18.09.2018 13:33 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
+1

Ich höre schon die Erstellung des Videos... Hallo liebe Freunde des Bastelkellers und ...

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye