whi*_*box 3 .net c# serialization f# rust
我正在手动将一个大数据块写入一个带有System.IO.BinaryWriter. 我之所以选择它,是因为与各种其他序列化和反序列化方法(我目前正在使用 反序列化)相比性能有所提高System.IO.BinaryReader。
我可能需要在其他编程语言(如Java和/或Rust. 他们是否能够理解由System.IO.BinaryWriter.NET 的“System.IO.BinaryReader”编写的原始二进制文件并以类似的方式阅读它?
(我假设新平台(Java/Rust)将隐式了解原始二进制文件的编写顺序。)
我知道协议缓冲区是在这种情况下用于序列化/反序列化的高性能和语言不可知框架,但是:(1)我正在使用 F# 并且它与受歧视的联合斗争(2)这并不是真正的努力编写我自己的自定义序列化程序,因为我的类型不太复杂
这取决于您使用BinaryWriter.
byte,sbyte和byte[]:没问题。(U)IntXX: 字节序问题。.NETBinaryWriter以小端格式转储这些类型。float和double:如果两个系统使用相同的IEEE 754标准,并且两个系统使用相同的字节序,那么就没有问题。decimal: 这是.NET 特定的类型,类似于Currency但使用不同的格式。小心使用。char和char[]:使用当前Encoding的BinaryWriter。在双方使用相同的编码,一切正常。string: 字符串的长度以所谓的7 位编码 int格式(1 个字节最多 127 个字符等)进行编码,并使用当前编码。为了使事情兼容,也许您应该使用手动转储的长度信息转储字符数组。| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |