Ich arbeite an einer Android-App, die Daten im String-Format durch BLE empfängt. Diese Zeichenfolge enthält ADC-Werte im HEX-Format. Um Speicherplatz zu sparen, enthielt ich zwei Hexadezimalwerte pro Byte (zum Beispiel 0xED
). Ich kann diese Werte jedoch nicht aus der Zeichenfolge abrufen. Also muss ich in der Lage sein, eine int[]
von der Zeichenfolge zu bekommen, die jedes indizierte Zeichen in zwei teilt.Cast erweiterte Zeichen zu Int Java
Als jetzt habe ich versucht, charAt(index)
zu bekommen, und dann Gießen char
zu int
. Dies funktioniert jedoch nur für ASCII-gültige Daten. Sobald die Daten für ein Zeichen über 127 hinausgehen, wird ein Standardwert für Ausnahmen zurückgegeben. Gibt es eine Möglichkeit, dies zu vermeiden?
Der folgende Code funktioniert für jeden Wert unter 127 in Ordnung, so brauche ich nur eine Lösung für die Werte über 127.
for (int i = 0; i < 119; i++) {
char charTemp1 = datastring.charAt(i);
int test = charTemp1 & 0xF0;
int test2 = charTemp1 & 0xF;
}
[Parse] (https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt (java.lang.String, 20int%)), um sie mit ein Radix von 16 – litelite
Bitte ein [mcve]. Zeigen Sie uns Beispielcode, der eine solche Zeichenfolge erstellt und wo Sie stecken geblieben sind. – GhostCat
Benutzt keine Strings, um beliebige Bytes zu speichern. Das mag in C funktioniert haben, aber nicht hier. –