String.format rückgängig machen

kukuk

kukuk

App-Anbieter (kostenlos)
29
Ich habe ein Code Schnipsel gefunden von einen ColorPicker, bei dem der Wert z.b. -3336476 ist.


text1.setText(String.format("Current color: 0x%08x", color));

wird aus -3336476 -> 0xffcd16e4

Wie kann ich das wieder umkonvertier?
color ist eine Int Variable.
 
So, nachdem mich dieses Problem echt neugierig gemacht hat, habe ich ein wenig was versucht und gegooglet.

Leider weiß ich nicht genau, was du mit der Hexadezimalzahl anfangen willst.
Einen negativen Int-Wert mittels format in einen Hexadezimalwert umzuwandeln, ist glaube ich nicht so gut.

Hier ein StackOverflow-Beitrag: Java negative int to hex and back fails

Ich habe ein wenig getestet:
String.format("Current color: 0x%08x", 10)); ergibt 0x0000000a
Aber
String.format("Current color: 0x%08x", -10)); ergibt 0xfffffff6

Also sowas wie 16^8 -10
Leider ist 16^8 doppelt wie Int.Max also kann man das nicht wieder in einen Int umwandeln.

Lies dir am besten den Stackoverflow-Beitrag durch. Vielleicht machst du dann auch statt format lieber: Integer.toHexString
 
  • Danke
Reaktionen: kukuk
Ich code gerade einen Farb-converter, der HEX & RGB kann. direkt mit Farbauswahl und direkter Eingabe über Textfelder. Die Hex-Farbcodes brauch man z.B für die Entwicklung mit Android oder für die Web-Entwicklung.
Und da ich keine App gefunden habe, die das genauso kann wie ich das haben möchte und benötige, habe ich mir jetzt mal die Arbeit gemacht. Zudem möchte ich in meiner Überstunden-App eine Benutzerdefinierte Farb-Theme einbauen.
Zur Hilfe habe ich mir AmbilWarna Library genommen und einige Änderungen und Verbesserungen dort vorgenommen. Die Library arbeitet intern mit integer Werten für die Farbe.
Danke für deinen Hinweis. Ich habe jetzt heute 5h an meinem Problem gesessen und eine Lösung gefunden.
Wenn man einen Hex-Wert hat diesen wieder in das Ursprungsformat von der Library zu bekommen.
Falls noch jemand für einem ähnlichen Problem steht, hier ist mein Code:


Man muss vorher den Hex-Farbcode noch bearbeiten und das # bzw. 0x zu ff replacen.
int n = (int) Long.parseLong(hexNumber, 16);
 
Zuletzt bearbeitet:
Ich habe jetzt aber das nächste Problem. Und zwar wird z.B #5E5E0F beim übernehmen und konvertieren kleiner also zu #5E5E0E.
Wie kann das denn sein? Was kann ich dagegen tun?
 
Das sieht nach einem Umwandlungsfehler von negativen Integers aus, wenn jemand die Berechnung des Zweierkomplements selber versucht und das Addieren der 1 vergisst.

-x = (x ^ 0xffffff) + 1
 
  • Danke
Reaktionen: kukuk
Ich habe das jetzt anders gemacht, ich übergebe direkt den hex-code und nun funktioniert es.
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.716
RealNiclas
R
tom-ah
Antworten
0
Aufrufe
1.245
tom-ah
tom-ah
A
Antworten
5
Aufrufe
963
jogimuc
J
Zurück
Oben Unten