使用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*参数,请大神帮忙看看
[解决办法]
同求大神指点