[英]Cast extended char to int java
我正在使用通过BLE接收String格式的数据的Android应用程序。 该字符串包含HEX格式的ADC值。 为了节省存储空间,我每个字节包含两个十六进制值(例如0xED
)。 但是,我无法从字符串中检索这些值。 因此,我需要能够从将每个索引char分成两部分的字符串中获取int[]
。
目前,我尝试获取charAt(index)
,然后将char
为int
。 但是,这仅适用于ASCII有效数据。 一旦数据超过1个字符的127,它将返回异常的默认值。 有什么办法可以避免这种情况?
下面的代码适用于127以下的每个值,因此我只需要解决127以上的值。
for (int i = 0; i < 119; i++) { char charTemp1 = datastring.charAt(i); int test = charTemp1 & 0xF0; int test2 = charTemp1 & 0xF; }
您可能需要详细说明输入字符串格式的工作方式。 对于可能包含成对的十六进制数字的字符串,您显示119个字符,但我不明白。 请注意,下面我在代码中给出了一个例子testVector
。 您的字符串有何不同?
public class ParseInt
{
public static void main(String[] args) {
String testVector = "EDAB1234";
System.out.println( Arrays.toString( parseInts(testVector) ) );
}
public static int[] parseInts( String hex ) {
int[] retVal = new int[ hex.length() / 2 ];
for( int i = 0; i < hex.length()/2; i++ ) {
retVal[i] = Integer.parseInt( hex.substring( i*2, i*2+2), 16 );
}
return retVal;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.