繁体   English   中英

将扩展的char转换为int java

[英]Cast extended char to int java

我正在使用通过BLE接收String格式的数据的Android应用程序。 该字符串包含HEX格式的ADC值。 为了节省存储空间,我每个字节包含两个十六进制值(例如0xED )。 但是,我无法从字符串中检索这些值。 因此,我需要能够从将每个索引char分成两部分的字符串中获取int[]

目前,我尝试获取charAt(index) ,然后将charint 但是,这仅适用于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM