首页 > 其他分享 >二进制数组

二进制数组

时间:2024-04-27 14:34:13浏览次数:23  
标签:write struct 二进制 Write records 数组

点击查看代码
# 读写二进制结构数组
from functools import partial
from struct import Struct


# Write
def write_records(records, format, f):
    """Write a sequence of tuple to a binary file of structures"""
    record_struct = Struct(format)
    for r in records:
        f.write(record_struct.pack(*r))


# Write example
records = [(1, 2.3, 4.5), (6, 7.8, 9.0), (10, 12.13, 14.15)]
with open("binary_array", "wb") as f:
    write_records(records, "<idd", f)


# Read
def read_records(format, f):
    record_struct = Struct(format)
    # 利用 iter 和 partial 对固定大小的记录做迭代
    chunks = iter(partial(f.read, record_struct.size), b"")
    return (record_struct.unpack(chunk) for chunk in chunks)


# Read example
with open("binary_array", "rb") as f:
    for i in read_records("<idd", f):
        print("read data: ", i)


# 对于一个同大量二进制数据打交道的程序,最好使用像numpy这样的库来处理
import numpy as np

with open("binary_array", "rb") as f:
    records = np.fromfile(f, dtype="<i, <d, <d")
    print(
        "numpy read", records
    )  # [( 1,  2.3 ,  4.5 ) ( 6,  7.8 ,  9.  ) (10, 12.13, 14.15)]

标签:write,struct,二进制,Write,records,数组
From: https://www.cnblogs.com/yimeimanong/p/18162017

相关文章

  • 复杂二进制数据
    点击查看代码#读取嵌套型和大小可变的二进制结构fromitertoolsimportchainimportstruct#多边形数组polys=[[(1.0,2.1),(2.0,3.2),(3.0,4.3)],[(1.1,2.2),(2.1,3.3),(3.1,4.4),(4.1,5.5)],[(1.2,2.3),(2.2,3.4),(3.1,4.5)],]#......
  • 和为 K 的子数组
    Problem:560.和为K的子数组给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2思路看了提示使用前缀和配合哈......
  • gdb 根据c语言二进制文件进程号查看内部多线程任务
    C语言二进制文件a编译时添加了-g(gdb调试),但是gdba这种方式有时不容易复现一些场景。这时可以先正常启动a,然后根据a的进程号启动gdb调试。#1.找到程序进程号psaux|grepa#2.使用GDB附加到该进程sudogdb-p[PID]#3.使用infothreads命令来列出......
  • js数组合并去重
    //数组去重//优化遍历数组法functionuniqueArr(array){varr=[];for(vari=0,l=array.length;i<l;i++){for(varj=i+1;j<l;j++)if(array[i].item_code===array[j].item_code)j=++i;r.push(array[i])......
  • Javascript的数据类型和json数组
    4个数据类型:NumberStringBooleanUndefinedalert(parseInt(k));//如果不是数字会输出NaN,从第一个字符开始输出数字,直到不是数字后返回值。json数组://js中k、v型数据,使用jsonvarperson={name:"张三",//注意里面的元素用,分割。定义的是key是name的value值为张三age......
  • 力扣-442. 数组中重复的数据
    1.题目介绍题目地址(442.数组中重复的数据-力扣(LeetCode))https://leetcode.cn/problems/find-all-duplicates-in-an-array/题目描述给你一个长度为n的整数数组nums,其中nums的所有整数都在范围[1,n]内,且每个整数出现一次或两次。请你找出所有出现两次的整数,......
  • etcd集群节点扩容【二进制】
    1、更新etcd集群证书信息#生成新证书cfsslgencert-initcaca-csr.json|cfssljson-bareca-cfsslgencert-ca=ca.pem-ca-key=ca-key.pem-config=ca-config.json-profile=wwwserver-csr.json|cfssljson-bareserver2、拷贝证书到旧节点和新节点#旧节点cp~/TLS/e......
  • 力扣-448. 找到所有数组中消失的数字
    1.题目题目地址(448.找到所有数组中消失的数字-力扣(LeetCode))https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/题目描述给你一个含n个整数的数组nums,其中nums[i]在区间[1,n]内。请你找出所有在[1,n]范围内但没有出现在nums中的数字,......
  • php几个数组的奇淫巧计
    使用array_map()应用函数到数组的每个元素。$numbers=[1,2,3,4,5];$squares=array_map(function($number){return$number*$number;},$numbers);//$squares=[1,4,9,16,25]使用array_filter()过滤数组中的元素。$numbers=[1,2,3,4,5];$o......
  • C++数组的连续性
    虚拟上连续,物理上大概率连续,除非不在同一个物理页上,并且物理页不连续时数组在物理地址空间是否连续,对于用户空间的程序是不需要关心的。另外,对于一个抽象层次很高的编程语言,数组是不是一定要保证虚拟地址空间连续,感觉也是可以研究的。例如,java的数组就不连续?所以array到底是在......