库可以跨编程语言和机器序列化数字

时间:2010-08-31 07:56:56

标签: java c

我有一个Java程序,需要编写一个整数为8,16,32和64位,浮点数为16,32和64位的文件。 该文件需要由C中的程序读取(反之亦然)。 这些程序用于不同类型的机器,因此文件需要独立于小端或大端。

我正在寻找Java和C中的库来实现这一目标。该库需要紧凑,因为它也将用于微控制器。

注意:目前,我正在自己实现这些功能,并且工作正常(所以,不需要给我一个临时解决方案)。 注意:我知道我可以用人类可读的格式编写数字,并使用scanf来读取它们;我现在不想使用这个解决方案,因为它更慢,占用更多。

3 个答案:

答案 0 :(得分:3)

谷歌Protocol Buffers似乎就像你追求的那样。

答案 1 :(得分:2)

在Java方面,你可以使用DataOutputStream,它保证使用大端格式,即网络字节顺序。在C端,您可以使用ntohl() and ntohs()函数将网络字节顺序转换为主机字节顺序。

答案 2 :(得分:0)

一种可能性是使用Sun的XDR格式。奇怪的是,我不相信Java支持它,但如果你环顾四周,它很容易找到。 Sun确实包含一个带Solaris的XDR库;如果您不使用Solaris,那么很容易找到C的实现。