首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python解决大规模二进制数据错位问题描述解决方法实验代码最终代码

Python解决大规模二进制数据错位问题描述解决方法实验代码最终代码

作者头像
月见樽
发布2018-04-27 11:37:29
发布2018-04-27 11:37:29
8180
举报

问题描述

有一些二进制数据,每八位按顺序存为一个十进制数保存成CSV文件,每行为一个二进数数据,每个单元格均为一个十进制数。若数据为0000 0001 1000 0000,在CSV的一行中则存为1,128\n。 现发现存储错位,需要将每个数据整体向左移位2位并保存成以上描述的格式

解决方法

  • 将每个行数据读出并将每个十进制转换为8位二进制数的字符串(同时使用切片去除开头的二进制数标识)
  • 将字符串整体连接起来,切去开头两个0并在结尾连接一个00
  • 重新将字符串切片,并转换

实验代码

代码语言:javascript
复制
#读取数据
 with open("./ramdata_brockenline.csv") as file_point:
     content_list = [x.split(",") for x in file_point.read().split("\n")]

 input_data = []
 for content in content_list[:-1]:
     #转换为字符串并进行移位
     int_list = "".join([bin(int(x))[2:].zfill(8)
                         for x in content[1:]])[2:] + "00"
     #切片
     bin_list = [int(int_list[i: i + 8], 2) for i in range(0, len(int_list), 8)]
     input_data.append([content[0], bin_list])
 
 #打印出结果
 for x in input_data:
     print(x)
 print(len(input_data))

最终代码

代码语言:javascript
复制
class InputCSVHandle(object):
    """docstring for InputCSVHandle"""

    def __init__(self, FilePath):
        super(InputCSVHandle, self).__init__()
        self.FilePath = FilePath
        self.InputData = self.InputHanlde(self.CSVReader())

    def CSVReader(self):
        with open(self.FilePath, "r") as file_point:
            return [x.split(",")
                    for x in file_point.read().split("\n")]

    def InputHanlde(self, content_list):
        input_data = []
        for content in content_list[:-1]:
            int_list = "".join([bin(int(x))[2:].zfill(8)
                                for x in content[1:]])[2:] + "00"
            bin_list = [int(int_list[i: i + 8], 2)
                        for i in range(0, len(int_list), 8)]
            input_data.append([content[0], bin_list])
        return input_data

if __name__ == '__main__':
    test = InputCSVHandle("./ramdata_brockenline.csv")
    print(test.InputData)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 问题描述
  • 解决方法
  • 实验代码
  • 最终代码
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档