python binascii array('c')_详解Python中的array数组模块相关使用

初始化array实例化可以提供一个参数来描述允许那种数据类型,还可以有一个初始的数据序列存储在数组中。

import array

import binascii

s = 'This is the array.'

a = array.array('c', s)

print 'As string:', s

print 'As array :', a

print 'As hex :', binascii.hexlify(a)

数组配置为包含一个字节序列,用一个简单的字符串初始化。

>>> ================================ RESTART ================================

>>>

As string: This is the array.

As array : array('c', 'This is the array.')

As hex : 54686973206973207468652061727261792e

处理数组类似于其他python序列,可以采用同样方式扩展和处理array。

import array

import pprint

a = array.array('i', xrange(3))

print 'Initial :', a

a.extend(xrange(3))

print 'Extended:', a

print 'slice: :', a[2:5]

print 'Itetator:'

print list(enumerate(a))

支持的操作包括分片,迭代以及向末尾增加元素。

>>> ================================ RESTART ================================

>>>

Initial : array('i', [0, 1, 2])

Extended: array('i', [0, 1, 2, 0, 1, 2])

slice: : array('i', [2, 0, 1])

Itetator:

[(0, 0), (1, 1), (2, 2), (3, 0), (4, 1), (5, 2)]

数组和文件可以使用高效读/写文件的专用内置方法将数组的内容写入文件或从文件读取数组。

import array

import binascii

import tempfile

a = array.array('i', xrange(5))

print 'A1: ',a

output = tempfile.NamedTemporaryFile()

a.tofile(output.file)

output.flush

with open(output.name, 'rb') as input:

raw_input = input.read()

print 'Raw Contents:', binascii.hexlify(raw_data)

input.seek(0)

a2 = array.array('i')

a2.fromfile(input, len(a))

print 'A2: ', a2

候选字节顺序如果数组中的数据没有采用固有的字节顺序,或者在发送到一个采用不同字节顺序的系统前需要交换顺序,可以在python转换整个数组而无须迭代处理每个元素。

import array

import binascii

def to_hex(a):

chars_per_item = a.itemsize * 2

hex_version = binascii.hexlify(a)

num_chunks = len(hex_version) / chars_per_item

for i in xrange(num_chunks):

start = i * chars_per_item

end = start + chars_per_item

yield hex_version[start:end]

a1 = array.array('i', xrange(5))

a2 = array.array('i', xrange(5))

a2.byteswap()

fmt = '%10s %10s %10s %10s'

print fmt % ('A1_hex', 'A1', 'A2_hex', 'A2')

print fmt % (('-' * 10,) * 4)

for value in zip(to_hex(a1), a1, to_hex(a2), a2):

print fmt % value

byteswap()会交换C数组中元素的字节顺序,比在python中循环处理数据高效的多。

>>> ================================ RESTART ================================

>>>

A1_hex A1 A2_hex A2

---------- ---------- ---------- ----------

00000000 0 00000000 0

01000000 1 00000001 16777216

02000000 2 00000002 33554432

03000000 3 00000003 50331648

04000000 4 00000004 67108864

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你还可以续命几次?回顾DockPanel Suite项目的发展史

微软在设计Visual Studio.NET的时候汲取了之前IDE版本的各种教训,开始考虑怎样让开发人员能够快速调整多窗口的布局,灵活构建自己喜欢的日常界面。这种基于菜单条和悬浮面板的新界面也让Windows平台其他软件开发者豁然开朗,开始各种借鉴。微软…

利用赫夫曼编码进行数据解压

基本概念 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import java.security.AlgorithmConstraints; import java.util.*;/*** 创建人 w…

Spring Bean 定义

转载自 Spring Bean 定义 Bean 定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的,例如&#xff…

mysql5.7安装

MySQL 5.7 安装教程(全步骤、保姆级教程)_普通网友的博客-CSDN博客_mysql5.7的安装教程 Index of /mysql/downloads/MySQL-5.7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror This application requires Visual Studio 2013 x64 Redistribut…

检测窥屏_开挂、狙击、窥屏?乱象丛生的炉石狂野天梯,到底怎么了?

今日正文1 中午吃饭时,我第二十三次诱惑牌酱跟我一起去狂野玩,在他第二十三次拒绝后,我问他为什么,他放下了筷子看着我,只说了一个字:“乱”乱?嗯,想想最近的狂野,不论是…

.NET Core log4net 使用

log4net .NET Core 版使用,log4net 2.0.7版发布也有一段时间了,从2.0.6 版开始就已经支持.NET Core。 之前有介绍NLog .NET Core版的使用,ASP.NET Core 开发-Logging 使用NLog 写日志文件。 ASP.NET Core已经内置了日志支持,可以轻松输出到控…

Spring Bean 作用域

转载自 Spring Bean 作用域 Bean 的作用域 当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项。例如,为了强制 Spring 在每次需要时都产生一个新的 bean 实例,你应该声明 bean 的作用域的属性为 prototype。同理&#xff…

Java 计算两个时间相差的天,时,分钟,秒

public static String getDateTimePoor( Date startDate ,Date endDate ) {long nd 1000 * 24 * 60 * 60;long nh 1000 * 60 * 60;long nm 1000 * 60;// long ns 1000;// 获得两个时间的毫秒时间差异long diff endDate.getTime() - startDate.getTime();// 计算差多少天lo…

用赫夫曼树进行文件的压缩

思路分析 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import javax.xml.bind.SchemaOutputResolver; import java.io.*; import java.s…

廖雪峰python教程整理笔记_廖雪峰python教程笔记(一)

变量与变量名 如 a 123,此时,python解释器在做了两件事,在内存中创建了一个整数123对象,在内存中创建了一个名为a的变量。并把它指向123,一个赋值语句被执行后,内存中一个变量名与它所指向的对象就是一对一…

.NET跨平台之旅:博问站点迁移至ASP.NET Core on Linux并发布上线

Powered by ASP.NET Core on Linux! 我们全站的 .NET Core 迁移工作如火如荼,这是我们今年上半年的重要工作。 今天我们终于完成了博问产品(q.cnblogs.com)向 ASP.NET Core 的迁移,并已发布上线。如果您在博问页面的页…

用赫夫曼树进行文件解压

思路分析 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import javax.xml.bind.SchemaOutputResolver; import java.io.*; import java.s…

Spring Bean 后置处理器

转载自 Spring Bean 后置处理器 Spring——Bean 后置处理器 BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等。你也可以在 Spring 容器通过插入一个或多个 BeanPostProcessor 的实现来完成实例化&#xf…

python3 爬虫例子_如何让你写的爬虫速度像坐火箭一样快【并发请求】

开坑个新系列,主要面向新手,老司机可以忽略。这个系列内的文章将会让你知道如何做到让你写的爬虫在运行的时候速度能像火箭一样快!很多初学爬虫的朋友对于这方面的知识似乎是空白的,甚至还有一些在爬虫岗位上工作了一两年的人也搞…

二叉排序树的删除+图解

图解 第一种情况 第二种情况 第三种情况 代码实现 package com.atguigu.binarysorttree;import com.sun.javafx.sg.prism.NGImageView; import javafx.scene.transform.Rotate;import java.io.InputStream; import java.util.Timer;/*** 创建人 wdl* 创建时间 2021/3/29* 描述…

如何一秒钟从头构建一个 ASP.NET Core 中间件

前言 其实地上本没有路,走的人多了,也便成了路。 -- 鲁迅 就像上面鲁迅说的那样,其实在我们开发中间件的过程中,微软并没有制定一些策略或者文档来约束你如何编写一个中间件程序, 但是其中却存在者一些最佳实践的方法&…

Spring Bean 定义继承

转载自 Spring Bean 定义继承 Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等。 子 bean 的定义继承父定义的配置数据。子定义可以…

ssm(Spring+Spring mvc+mybatis)

在不久的之前我写了一篇ssh(SpringSpring mvchibernate)的文章,感兴趣的可以去这里看看~ 今天我来写一下ssm的增删改欧查案例: 数据库:mysql 浏览器:火狐浏览器 jdk:1.7 开发编辑器:myeclipse10.5 首…

grub shell 错误_使用grub-install修复Grub时出错

你的位置:问答吧-> Debian-> 问题详情使用grub-install修复Grub时出错WinXPDebian双系统,由于误操作导致开机后无法进入系统,错误信息为:GRUB Loading stage1.5.GRUB loading,please wait...error 22按照网上的说法,使用启动…

C# winform程序免安装.net framework在XP/win7/win10环境运行

前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本。 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfrom程序的部分截图 下面是n年前入坑C#写的winform。。。玩毒奶粉用的,勿喷。 .…