FPGA—YOLO

数据处理:为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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注