你的位置:首页 > 软件开发 > ASP.net > 一种C#生成符合Java规则的二进制文件方法

一种C#生成符合Java规则的二进制文件方法

发布时间:2016-02-27 14:00:07
1.一个项目中的真实问题实际项目中,本想通过C#制作小工具生成SHP的二进制空间索引文件,然后java服务端解析该空间索引文件进行使用。在真实使用中发现java端解析的该文件内容与C#写入的差别非常大,比如java中解析到的double均为非常大的负数。 ...

1.一个项目中的真实问题

实际项目中,本想通过C#制作小工具生成SHP的二进制空间索引文件,然后java服务端解析该空间索引文件进行使用。

在真实使用中发现java端解析的该文件内容与C#写入的差别非常大,比如java中解析到的double均为非常大的负数。

一种C#生成符合Java规则的二进制文件方法                       

2.排查问题

2.1 测试是否C#写入有误

 一种C#生成符合Java规则的二进制文件方法

检查写入的值在C#中解译为正确。

2.2 编码错误

用java生成相同的文件,编码与C#生成文件的编码一样,但是内容不一样,所以本身不是编码错误导致。

 一种C#生成符合Java规则的二进制文件方法

2.3 总结

推断出,错位原因为C#写入的值和Java写入的值不一样。

3.错误原因

a.C#中byte范围是[0,255],而Java中的byte范围是[-128,127]。

b.C#中的字节排序为低端排序,但是Java中的直接排序为高端排序。比如double值在java中是如此存储的:writes that long value to the underlying output stream as an 8-byte quantity, high byte first。

4.解决思路

4.1 描述

利用C#中的sbyte[-128,127],将C#中存入的byte数组进行倒置,然后再将各byte准换至sbyte,最后整体存入该sbyte数组。

4.2 具体实现代码

 一种C#生成符合Java规则的二进制文件方法

一种C#生成符合Java规则的二进制文件方法

一种C#生成符合Java规则的二进制文件方法

5.结果验证

C#中写入:

 一种C#生成符合Java规则的二进制文件方法

Java中读取:

 一种C#生成符合Java规则的二进制文件方法

 

结果一致。

 

                                                                      ——欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:一种C#生成符合Java规则的二进制文件方法

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录