使用JNA调用VC编译的DLL时,char*传送参数到java时用String解析存在问题

qqlaji123456 2013-12-10 01:12:28
使用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*参数,请大神帮忙看看
...全文
420 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
变身小甜甜 2016-01-26
  • 打赏
  • 举报
回复
Pointer如何解决的呢?楼主为什么不把解决方法贴出来啊?
q12161216 2013-12-20
  • 打赏
  • 举报
回复
同求大神指点
qqlaji123456 2013-12-20
  • 打赏
  • 举报
回复
Pointer解决
qqlaji123456 2013-12-10
  • 打赏
  • 举报
回复

50,504

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧