作者sweet00914 (别理我)
看板AndroidDev
标题Re: [问题] 蓝芽传送乱码
时间Wed Feb 27 14:52:09 2013
To stanleychao, xezct1213两位大大,
假设 从 device 丢出来的东西长度为 5个byte之ASCII hex,
而你欲取得数值是5个byte中的第二个byte
我会这麽做
int i_value = readBuf [1] & 0xFF; // if readBuf.Length=5, 将 ASCII之hex 转整数
String s_value = String.valueOf(i_value);//整数在转换成字串格式
※ 引述《stanleychao ()》之铭言:
: 大家好 小弟我最近在用android的蓝芽传送的东西
: 我使用血氧浓度计使用蓝芽传送到我写的android app
: 最後把图画出来
: 我使用是bluetoothchat的范例去改
: 其中我读值的一段是
: byte[] readBuf = (byte[]) msg.obj;
: String readMessage = new String(readBuf,0,msg.arg1);
: valueBuffer = readMessage;
: log.v(TAG,"read data:" + valueBuffer);
: 最後valueBuffer观察的结果都是一些乱码
: 我在想这是什麽问题?
: 可以请各位帮我吗
: 超级感谢的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.214.165
1F:推 xezct1213:int i_value = readBuf [0] & 0xFF; 可正常显示 02/27 15:18
2F:→ xezct1213:S大真的很感谢您,另外如何把传出去的值转成byte 02/27 15:20
你的意思-是从app送出指令至device吗?0.0?
※ 编辑: sweet00914 来自: 59.105.214.165 (02/27 15:29)
3F:推 xezct1213:S大 如您所说的 是 app传指令到device 02/27 15:36
5F:→ xezct1213:谢谢S大百忙抽空QQ... 02/27 15:37
6F:→ xezct1213:我这边传String 1 装置收到的是49 02/27 15:38
假设要send的byet 长度一样为5,且送出指令的格式为hex
byte[] out = new byte[5];
out[0] = (byte) 0x你你;
out[1] = (byte) 0x我我;
...
...
out[4] = (byte) 0x它它;
最後mmOutputStream.write(out);
※ 编辑: sweet00914 来自: 59.105.214.165 (02/27 15:43)
7F:推 xezct1213:所以如果手机端要传送49,out[0] = (byte) 0x4; 02/27 20:18
8F:→ xezct1213:out[1] = (byte) 0x9; 阵列是这样设吗? 02/27 20:19
9F:→ xezct1213:测试成功,要传hex格式,对不起眼残=.= 02/27 20:22
10F:推 xezct1213:那如果是ASCII码可以直接转byte吗? 02/27 20:45
11F:→ xezct1213:直接把0x你你 改成49即可,测试成功 02/27 21:18
12F:推 MetalChao:我有点看不懂, sweet 贴的两段 code, 怎麽看我都觉得是 02/28 00:04
13F:→ MetalChao:单纯在处理数值, 跟 ASCII hex 一点关系都没有? 02/28 00:04