日期:2014-05-20  浏览次数:20697 次

使用JNA调用VC编译的DLL时,char*传送参数到java时用String解析存在问题
使用JNA调用VC编译的DLL时,VC端char*传送参数到java时用String解析存在问题,如果传送的是0x00--0x7f都可以解析出来成为0--7f,但是一到0x80--0xff就解析成3f;
研究了一下发现传送的char是范围是0--255.而java里面用下面方法解析只能到7f(127);

代码示例:
VC里传送给JAVA的数据:
        date[0] = 0x02;
date[1] = 0x03;
date[2] = 0x0f;
date[3] = 0x0a;
date[4] = 0xf0;
date[5] = 0x7f;
date[6] = 0x80;
date[7] = 0xff;
 
java解析的代码:
    public int invoke(String str) {
        byte[] b = new byte[10];
        for (int j = 0; j < 10; j++) {
            b[j] = (byte) 0xff;
        }
        b = str.getBytes();
        for (int i = 0; i < 10; i++) {
            System.out.printf("%2x\n", b[i]);
        }
        return 1;
    }
java解析出来的数据:
 2
 3
 f
 a
3f(应该解析成f0)
7f
3f(应该解析成80)
3f(应该解析成ff)
3f
3f 
搞不清楚到底需要怎么来解析VC的DLL传送的char*参数,请大神帮忙看看

------解决方案--------------------
同求大神指点