Seite 1 von 1
Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 10:49
von funkheld
Hallo, guten Tag.
Ich habe bitte 256 Farbwerte in Hex für die VGA-Karte RGB in diesem Format.
000000
0000aa
00aa00
00aaaa
aa0000
aa00aa
aa5500
aaaaaa
555555
..........
..........
Ich möchte die bitte umwandeln in Decimal in diesem Format:
0 186 73
..........
.........
Wie geht das bitte mit nur Einlesen und Ausgabe als Text?
Danke.
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 11:18
von berie
Quick'n'dirty:
So ungefähr?
Code: Alles auswählen
EnableExplicit
Global r,g,b,c,d
For c=0 To 8
Read d
b=d&$ff
g=(d>>8)&$ff
r=(d>>16)&$ff
Debug Str(r)+" "+Str(g)+" "+Str(b)
Next
DataSection
Data.i $0,$0000aa,$00aa00,$00aaaa,$aa0000,$aa00aa,$aa5500,$aaaaaa,$555555
EndDataSection
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 13:19
von NicTheQuick
Wenn es Strings sind, dann zum Beispiel so:
Code: Alles auswählen
Define rgbLine.s, rgbValue.l
Restore rgbLines
Repeat
Read.s rgbLine
If rgbLine = "": Break: EndIf
rgbValue = Val("$" + rgbLine)
Debug "" + Red(rgbValue) + " " + Green(rgbValue) + " " + Blue(rgbValue)
ForEver
DataSection
rgbLines:
Data.s "000000"
Data.s "0000aa"
Data.s "00aa00"
Data.s "00aaaa"
Data.s "aa0000"
Data.s "aa00aa"
Data.s "aa5500"
Data.s "aaaaaa"
Data.s "555555"
Data.s ""
EndDataSection
Aber funkheld, eigentlich müsstest du das doch schon können. Du bist doch schon lange hier mit dabei.
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 14:57
von funkheld
Danke für die Info.
So ganz funktioniert es noch nicht , weil ich einen String einlese.
d=Read....... da meckert Purebasic rum.
Danke.
Code: Alles auswählen
Global r,g,b,c,d
ReadFile(0, "d:\dospbgeos\vgapalette-umw1.txt")
CreateFile(1,"d:\dospbgeos\vga.pal")
While Eof(0) = 0
For c=0 To 8
d=Read.......???
b=d&$ff
g=(d>>8)&$ff
r=(d>>16)&$ff
Debug Str(r)+" "+Str(g)+" "+Str(b)
Next
Wend
CloseFile(0)
CloseFile(1)
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 15:02
von NicTheQuick
Nutze dafür meine Variante. Und wenn du aus Dateien liest, weißt du doch schon lange, was du benötigst. Schau einfach nochmal in die Hilfe. ReadFile() hast du ja auch selbstständig gefunden.
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 12.11.2023 19:34
von berie
Ich habe da mal was gebaut:
Code: Alles auswählen
EnableExplicit
Global.s RGBWerte="H:\PureBasic Programme\rgb.txt" ;<--- Hier deinen Dateipfad eintragen
Global.l Farbe
If ReadFile(1,RGBWerte) ;Die For...Next-Schleife in meinem ersten Post war zum Einlesen der Datazeile(n) gedacht.
While Not Eof(1) ;Alle Daten lesen bis Dateiende
Farbe=Val("$"+ReadString(1)) ;Hier habe ich mich von NikTheQuick inspirieren lassen
; - ist hoffentlich okay für dich, NikTheQuick ?
Debug Str(Red(Farbe))+" "+Str(Green(Farbe))+" "+Str(Blue(Farbe)) ;ist einfacher als meine Bitschiebereien. Danke NikTheQuick
Wend
CloseFile(1)
EndIf
Ich habe die Daten aus deinem ersten Post genommen und gespeichert unter "H:\PureBasic Programme\rgb.txt"
Code: Alles auswählen
000000
0000aa
00aa00
00aaaa
aa0000
aa00aa
aa5500
aaaaaa
555555
Aber, wie NickTheQuick schon schrieb, die Hilfe hilft da weiter.
Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 13.11.2023 09:38
von NicTheQuick
Es ist faszinierend wie viele Leute mich hier falsch schreiben.

Re: Hexwerte bitte in Decimal umwandeln.
Verfasst: 13.11.2023 10:15
von berie
Sorry!