Io 在Nim中写入/读取二进制文件

Io 在Nim中写入/读取二进制文件,io,binaryfiles,nim-lang,Io,Binaryfiles,Nim Lang,在Nim中写入和读取二进制文件的最佳方式是什么?我想将交替浮点和整数写入二进制文件,然后能够读取该文件。要用Python编写这个二进制文件,我将执行以下操作 导入结构 #交替浮点和整数的列表 arr=[0.5,1,1.5,2,2.5,3] #这里“f”代表浮点,“i”代表整数 binStruct=struct.struct('fi'*(len(arr)/2)) #把它转换成字符串格式 包装=箱结构包装(*元组(arr)) #打开文件以二进制模式写入 打开('/path/to/my/file',w

在Nim中写入和读取二进制文件的最佳方式是什么?我想将交替浮点和整数写入二进制文件,然后能够读取该文件。要用Python编写这个二进制文件,我将执行以下操作

导入结构
#交替浮点和整数的列表
arr=[0.5,1,1.5,2,2.5,3]
#这里“f”代表浮点,“i”代表整数
binStruct=struct.struct('fi'*(len(arr)/2))
#把它转换成字符串格式
包装=箱结构包装(*元组(arr))
#打开文件以二进制模式写入
打开('/path/to/my/file',wb')作为fh:
fh.写入(打包)
为了阅读,我会做如下的事情

arr=[]
打开('/path/to/my/file',rb')作为fh:
数据=fh.read()
对于范围内的i(0,len(数据),8):
tup=binStruct.unpack('fi',数据[i:i+8])
arr.append(tup)
在本例中,读取文件后,arr将为

[(0.5, 1), (1.5, 2), (2.5, 3)] 

正在Nim中寻找类似的功能。

我认为您应该在模块中找到所需的一切。下面是一个小例子:

导入流
类型
交替=顺序[(浮点,整数)]
过程存储(fn:字符串,数据:交替)=
var s=newFileStream(fn,fmWrite)
s、 写入(data.len)
对于数据中的x:
s、 写入(x[0])
s、 写入(x[1])
s、 关闭()
过程加载(fn:字符串):交替=
var s=newFileStream(fn,fmRead)
设size=s.readInt64()#实际上,我们不要用它来演示s.atEnd
结果=newSeq[(浮点,整数)]()
虽然不是s.atEnd:
let element=(s.readFloat64.float,s.readInt64.int)
结果。添加(元素)
s、 关闭()
让数据=@[(1.0,1),(2.0,2)]
存储(“tmp.dat”,数据)
让dataLoaded=load(“tmp.dat”)
回波数据加载