数据处理:为DDR写入提供数据
目前,可以实现将二进制10101bit写入txt、以及bin文件中
实现功能:将输入 s = ["0111101","0111011"] 二进制字符串数组写入filepath(bin文件),并从bin文件读取二进制字符串
r_w:读写模式 r读,w写
s:输入的二进制字符串数组
bite=2:当r_w="r"是,每次从bin文件中读取2个Bite(16bbit)作为个数据
filepath:bin文件
def stringbit_bin(filepath,s=None,r_w="r",bite=2 ):
"""
函数说明:
实现功能:将输入 s = ["0111101","0111011"] 二进制字符串数组写入filepath(bin文件),并从bin文件读取二进制字符串
r_w:读写模式 r读,w写
s:输入的二进制字符串数组
bite=2:当r_w="r"是,每次从bin文件中读取2个Bite(16bbit)作为个数据
filepath:bin文件
"""
if r_w =="r":
# 为了能够从文件中得到完全一致的二进制字符串,需保留原始长度l
# 从文件中还原
size = os.path.getsize(filepath) #获得文件大小
with open(filepath, "rb") as f:
for i in range(size):
data = f.read(2) #每次输出2个字节
binstr = "".join(["{:08b}".format(c) for c in data])
binstr = binstr[:l] # 此时的binstr为原来的二进制字符串
print(binstr)
elif r_w == "w":
# 需保存的字符串 s
assert s != None
ls = len(s)
for s_item in s:
# 首先需要保存原字符串长度
l = len(s_item)
# 首先将s变成的8的整数倍长的字符串 可以直接在后面填0
if 0 != l % 8:
r = l % 8
s_item += "0"*(8-r)
# 将s转成bytes
b = bytes([int(s_item[i:i+8], 2) for i in range(0, len(s_item), 8)])
# bytes 可以直接写入以二进制模式打开的文件
# 例如
with open(filepath, "ab+") as f:
f.write(b)
else:
pass