【发布时间】:2017-05-17 14:27:48
【问题描述】:
我正在开发一个通过 BLE 接收字符串格式数据的 Android 应用程序。
该字符串包含 HEX 格式的 ADC 值。为了节省存储空间,我每个字节包含两个十六进制值(例如0xED)。但是,我无法从字符串中检索这些值。
所以我需要能够从将每个索引字符一分为二的字符串中获得int[]。
目前我尝试获取charAt(index),然后将char 转换为int。但是,这只适用于 ASCII 有效数据。一旦一个字符的数据超过 127,它就会返回异常的默认值。有什么办法可以避免吗?
下面的代码适用于低于 127 的每个值,所以我只需要一个高于 127 的值的解决方案。
for (int i = 0; i < 119; i++) {
char charTemp1 = datastring.charAt(i);
int test = charTemp1 & 0xF0;
int test2 = charTemp1 & 0xF;
}
【问题讨论】:
-
Parse 基数为 16 的他们
-
请发送minimal reproducible example。向我们展示创建这样一个字符串的示例代码,以及你卡在哪里。
-
不要滥用字符串来存储任意字节。这可能在 C 中有效,但在这里不行。
-
这可能是问题所在,我主要从 C 背景开始。那么,有什么建议吗? String 是由 Android 上的 BLE 示例提供的,所以我想我必须从 String 开始..
-
@ErichKitzmueller 那么在 Java 中的发展方向是什么? :)