java读取C++里的文件,C++的long用java怎么读取。负数的转变

最近在学习java知识,遇到一个比较头疼的问题,C++的写的文件,用java来读取,存在很多问题,最主要的是C++的long(4个字节)和java中的long(8个字节)字节数不一样长,所以在读的过程中,要转换一些,这是解决问题的一点心得,分享出来,希望给大家提供帮助。


int poslocation = tranferdataBuffer.getInt();//从文件的bytebuffer中获取4个字节。一般用getInt实现

当poslocation为负数时,具体实现:
    int antiposlocation =(~poslocation);
    int nCount2=Math.abs(((antiposlocation&0xff)<<24)|((antiposlocation&0xff00)<<8)|((antiposlocation&0xff0000)>>8) |((antiposlocation&0xff000000)>>24)+1);
  
poslocation为正数时:
  int nCount1=((poslocation&0xff)<<24)|((poslocation&0xff00)<<8)|((poslocation&0xff0000)>>8)|((poslocation&0xff000000)>>24);

此时nCount2和nCount1就是C++中long型数据的值了。

 

c++中的short转换成java中的short

short uditCircstranfer= tranferdataBuffera.getShort();
short nAuditCircsLen = (short) ((short) ((uditCircstranfer&0xff)<<8)|((uditCircstranfer&0xff00)>>8));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值