java - TextView::getText() 对于不可见字符返回 -3

标签 java android string byte ascii

如果我设置 TextView 字节如下:

byte[] byteArray = { 25, 20, -101 };
TextView encrypted_text = (TextView) findViewById(R.id.encrypted);
encrypted_text.setText(new String(byteArray));

然后我可以检索 25、20,但不能检索 -101 值。 对于第三个字符,我总是得到 -3 作为输出:

Log.v(TAG, "3rd byte: "+ (byte) encrypted_text.getText().toString().charAt(2));

附注实际上,所有不可见字符都会返回 -3。

如何从 TextView 取回我的 byteArray?

最佳答案

我知道如何在 TextView 中存储和检索负字节值。 首先,我们需要将有符号字节转换为无符号字节。因为在 Java 中所有类型都经过签名,所以我们需要手动执行此操作:

// remove signed bit(32nd), keep value as "next" (127+...) positive byte value
int unsignedValue = 255 - ((int)byteArray[i])&0b1111111;

关于java - TextView::getText() 对于不可见字符返回 -3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562681/

相关文章:

java - 比较java中同一个数组的元素

java - 根据流的遇到顺序进行交换操作

java - 我不明白 Java 中二进制数的行为

android - 三星设备间歇性地报告不正确的屏幕宽度

javascript字符串替换特殊字符

java - Springboot 1.5.9版本无法连接mysql RDS

android - 突然执行 aapt 时出错

java - GridView onItemClickListener 永远不会被调用

android - 我可以为字符串数组中的项目提供 ID 吗?

关于返回字符串长度的困惑