Android java转换问题

时间:2010-08-29 15:38:36

标签: java

我目前遇到的问题是,我喜欢通过蓝牙(以16位编码)向嵌入式设备发送一些命令。不幸的是,Java中似乎存在转换错误,或者至少我不知道如何处理它。

这些位是例如1001 0010 1011 0010 我考虑过为此使用char(16位),但有时它会被Java转换为24位(3个打印字符),当我尝试将其添加到字符串时。这取决于整数值。

如何在此处获取打印的ASCII(或其他)字符? bluetooth-function需要String作为参数。

        int a = 127, b = 221;  // 0-255  32 bit
            char p1 = (char) b; // 0000 0000 bbbb bbbb  16 bit
            char p2 = (char) a; // 0000 0000 aaaa aaaa  16 bit

            // bbbb bbbb aaaa aaaa
        char anUnsignedShort = (char) ((p1 << 8) | p2);  // 16 bit
        System.out.println(""+(char)2+anUnsignedShort+(char)3);
        // ???? ???? bbbb bbbb aaaa aaaa  -- 24bits sometimes. Why ???

1 个答案:

答案 0 :(得分:0)

了解String Concatenation Operator +的隐式转换可能很有用。或者,考虑byte[],适用于OutputStream

byte[] ba = {(byte) 2, (byte) 221, (byte) 127, (byte) 3};
System.out.println(Arrays.toString(ba));

附录:

  

我需要它为character - 在这种情况下为4个字节0x02,

同样的原则适用,除非您获得平台的默认字符编码。

char[] ca = {(char) 2, (char) 221, (char) 127, (char) 3};
System.out.println(Arrays.toString(ca));