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

4.解决思路

2.2 编码错误

用java生成相同的公文,编码与C#转变文书的编码一样,不过内容不相同,所以我不是编码错误造成。

 图片 1

2.排查难点

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。

5.结果证实

C#中写入:

 图片 2

Java中读取:

 图片 3

 

结果一致。

小说版权由小编李晓晖和和讯共有,若转发请于分明处标明出处:http://www.cnblogs.com/naaoveGIS/

4.1 描述

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

4.2 具体贯彻代码

 图片 4

图片 5

图片 6

6.有关写入string的标题

咱们只要用C#将string变成二进制写入到文件中时,会意识Java写入相同的string值生成的文件大小比C#的小,那是为啥吧?

翻看Java中写入string二进制的印证:Writes the string to the file as a
sequence of bytes. Each character in the string is written out, in
sequence, by discarding its high eight bits。

看得出其写入的字符,默许为ANSI编码,即唯有一个字节,同时其字节排序如故是高位排序。发现那一点后,大家得以对C#中写入字符串举办重写:

图片 7

 

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

                                                                          
如若您认为本文确实协助了你,能够微信扫一扫,举办小额的打赏和鞭策,谢谢
^_^

                                          图片 8

2.1 测试是不是C#写入有误

 图片 9

反省写入的值在C#中解译为正确。

1.一个系列中的真实难题

实际项目中,本想通过C#创设小工具生成SHP的二进制空间引得文件,然后java服务端解析该空间引得文件举办利用。

在实际使用中发现java端解析的该文件内容与C#写入的异样很是大,比如java中剖析到的double均为极度大的负数。

图片 10                       

2.3 总结

想见出,错位原因为C#写入的值和Java写入的值分歧。

相关文章