Ich versuche, eine vorzeichenbehaftete Dezimalzahl in eine Dezimalzahl ohne Vorzeichen zu konvertieren, aber ich weiß nicht, wie das geht.Android signed int zu unsigned Int-Konvertierung
Das Android-Gerät kommuniziert mit einem anderen iOS-Gerät, und wir müssen Farbcodes von einer Plattform zur anderen senden. Da diese Plattformen unterschiedliche Datentypen aufweisen (Java-signierte Datentypen und nicht signierte iOS-Datentypen), müssen Konvertierungen vorgenommen werden, um auf beiden Seiten die gleichen Farben zu erhalten.
Das ist, was ich bisher gemacht habe:
// Parse and retrieve color code from the backend server
int unsignedColor = getColorFromBackend();
// Now add an alpha channel 'FF' and make it unsigned color
int signedColor = toSignedColor(unsignedColor);
// The signed value is -14701818
// Now try to make the conversion back, from signed to unsigned
int conversion = toUnsignedColor(signedColor);
// The value is: 129712 which is not the value I want (2075398)
private int toUnsignedColor(int signedColor) {
String hex = Integer.toHexString(signedColor);
hex = hex.substring(2, hex.length() - 1);
// hex = "1FAB06";
int unsignedInt = Integer.parseInt(hex, 16);
return unsignedInt;
}
private int toSignedColor(int unsignedColor) {
String hexColor = String.format("#%06X", (0xFFFFFFFF & unsignedColor));
// hexColor = "#FF1FAB06";
int signedColor = Color.parseColor(hexColor);
return signedColor;
}
// This is an example
private int getColorFromBackend() {
return 2075398;
}
'Versuch, eine Dezimalzahl mit Vorzeichen auf eine unsigned decimal' zu konvertieren. Du meinst: signed integer to unsigned integer? Bitte geben Sie ein Beispiel. Und zeigen Sie, warum das problematisch wäre. – greenapps
Ich frage mich, wie Sie die Daten zwischen Android ein IOS senden. Da Sie vier Bytes in jeder Richtung senden würden, würde ich für eine ganze Zahl denken. Sei es signiert oder nicht signiert. – greenapps
Bitte geben Sie ein Beispiel für den Empfang von Daten von IOS, die problematisch ist. – greenapps