bytes

转自

别来无恙 提交于 2020-03-25 03:40:05
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize() pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存 struct中支持的格式如下表: Format C Type Python 字节数 x pad byte no value 1 c char string of length 1 1 b signed char integer 1 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer or long 4 l long integer 4 L unsigned long long 4 q long long long

Python使用struct处理二进制

走远了吗. 提交于 2020-03-25 03:33:19
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize() pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存 struct中支持的格式如下表: Format C Type Python 字节数 x pad byte no value 1 c char string of length 1 1 b signed char integer 1 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer or long 4 l long integer 4 L unsigned long long 4 q long long long

输入输出流复制文件

旧街凉风 提交于 2020-03-23 09:41:05
/** * 输入输出流复制文件 * 问题1:printByteArr 打印的数据49,50 是什么 *   读的文件转化成子节数组,文本中的1不代表读出的子节也是1 * * @throws IOException */ @Test public void test4() throws IOException { File srcFile = new File("F://file/test.txt"); FileInputStream fileInputStream = new FileInputStream(srcFile); OutputStream outputStream = new FileOutputStream("F://file/test1.txt", false);// 多次复制覆盖 int byteSum = 0; byte[] bytes = new byte[10]; for (; ; ) { int read = fileInputStream.read(bytes); // 本次读取不是先清空再读取,而是从前往后覆盖(加入本次读取的为6个,则bytes后面的4个是上次读取的数据) if (read == -1) break; outputStream.write(bytes, 0, read); outputStream.flush(); byteSum

Redhat linux 挂载命令mount

一曲冷凌霜 提交于 2020-03-21 12:32:31
    命令格式:    mount [-t vfstype] [-o options] device dir   其中:   1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:   光盘或光盘镜像:iso9660   DOS fat16文件系统:msdos   Windows 9x fat32文件系统:vfat   Windows NT ntfs文件系统:ntfs   Mount Windows文件网络共享:smbfs   UNIX(LINUX) 文件网络共享:nfs   2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:   loop:用来把一个文件当成硬盘分区挂接上系统   ro:采用只读方式挂接设备   rw:采用读写方式挂接设备   iocharset:指定访问文件系统所用字符集   3.device 要挂接(mount)的设备。   4.dir设备在系统上的挂接点(mount point)。   1、光盘挂载    标注: 光盘自动挂载到默认路径 /media 目录下   假如想制作光盘挂载点进行下面操作:   将当前光驱里的光盘制作成光盘镜像文件/home/mydisk.iso   #cp /media /home/mydisk.iso   建立一个目录用来作挂载点,一般默认挂载点在

Linux 内存泄露调试工具

旧城冷巷雨未停 提交于 2020-03-19 22:54:23
用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一款工具。 Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以 运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序,还有一系列的工具,它们完成调试,剖析和一些类似的任 务。valgrind是高度模块化的,所以开发人员或者用户可以给它添加新的工具而不会损坏己有的结构。 valgrind的官方网址是:http://valgrind.org 你可以在它的网站上下载到最新的valgrind,它是开放源码和免费的。 一、介绍 valgrind包含几个标准的工具,它们是: 1、memcheck memcheck探测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。因此memcheck工具能够探测到以下问题: 1)使用未初始化的内存 2)读/写已经被释放的内存 3)读/写内存越界 4)读/写不恰当的内存栈空间 5)内存泄漏 6)使用malloc/new/new[]和free/delete/delete[]不匹配。 2、cachegrind

Python3中的bytes和str类型

两盒软妹~` 提交于 2020-03-19 18:23:40
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是 Unicode ,由 str 类型表示,二进制数据则由 bytes 类型表示。Python 3不会以任意隐式的方式混用 str 和 bytes ,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。 下面让我们深入分析一下二者的区别和联系。 编码发展的历史 在谈 bytes 和 str 之前,需要先说说关于编码是如何发展的。。 在计算机历史的早期,美国为代表的英语系国家主导了整个计算机行业,26个英文字母组成了多样的英语单词、语句、文章。因此,最早的字符编码规范是ASCII码,一种8位即1个字节的编码规范,它可以涵盖整个英语系的编码需要。 编码是什么?编码就是把一个字符用一个二进制来表示。我们都知道,所有的东西,不管是英文、中文还是符号等等,最终存储在磁盘上都是01010101这类东西。在计算机内部,读取和存储数据归根结底,处理的都是0和1组成的比特流。问题来了,人类看不懂这些比特流,如何让这些010101对人类变得可读呢?于是出现了字符编码,它是个翻译机,在计算机内部某个地方,透明的帮我们将比特流翻译成人类可以直接理解的文字。对于一般用户,不需要知道这个过程是什么原理,是怎么执行的。但是对于程序员却是个必须搞清楚的问题。 以

EVE-NG硬盘扩容,存储海量镜像

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-18 17:04:20
EVE-NG硬盘扩容,存储海量镜像 一、查看当前磁盘使用情况 技术分享 /dev/mapper/eve--ng--vg-root,所以我们只要把这个LV容量扩大即可 技术分享 二、给EVE-NG硬盘扩大容量,对于EVE-NG来说,相当于加大物理磁盘容量 把EVE-NG关机后编辑EVE-NG虚拟机 注意:无法扩展具有快照的虚拟机中的磁盘,必须删除快照。 技术分享 点击扩展 技术分享 填写磁盘大小,点扩展 技术分享 等待完成扩展 技术分享 三、EVE-NG系统层面增大VG容量 1、加电开机EVE-NG,确认硬盘容量为500G root@eve-ng:~# fdisk -l …… …… …… Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6d98196e Device Boot Start End Sectors Size Id Type(硬盘分区情况)

TypeError: a bytes-like object is required, not 'str'--引申出bytes和str类型详细说明

て烟熏妆下的殇ゞ 提交于 2020-03-17 22:55:04
####本篇文章摘录了Chown-Jane-Y 和 singularity的文章#### TypeError: a bytes-like object is required, not 'str' 问题分析 该问题主要是由于当前操作的字符串是bytes类型的字符串对象,并对该bytes类型的字符串对象进行按照str类型的操作。 如下面图所示,s 为bytes类型字符串对象。 当对s进行按照str类型的操作(split)时,会弹出一下错误提示。因为split函数传入的参数是str类型的字符串,而党鞭的s为bytes编码类型的字符串对象 解决方法 此时的解决办法是,将s转码成为str类型的或者是将对s进行str类型操作转化为对bytes类型的操作。 方法1:bytes-->str 方法2:对s进行str类型操作转化为对bytes类型的操作 由于split里面用到分解字符串中的是空格‘ ’,但是该‘ ’是按照str编码的,需要转化成为bytes类型的,然后再直接对s进行对bytes类型的操作。 str和bytes类型之间的常用转码方式: 1、str to bytes:(3种方式) 2、bytes to str (3种方式) Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是 Unicode ,由 str 类型表示

python常用函数

和自甴很熟 提交于 2020-03-16 18:44:23
import urllib.request import re ###<source src="http://ocs.maiziedu.com/55ca5753cdf0403eb6b700d81dc5a896.mp4" type='video/mp4'/> #### <source src="http://ocs.maiziedu.com/55ca5753cdf0403eb6b700d81dc5a896.mp4" type='video/mp4'/> ##res = urllib.request.urlopen('http://www.maiziedu.com/course/qrsqd/6-164/') ##html = res.read().encode('utf-8') ##decode 解译 encode译成 ###先用utf-8解,再用gbk译成 ###字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, ###即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 ###decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。 ##

Python3安装HTMLTestRunner,修改HTMLTestRunner.py文件

限于喜欢 提交于 2020-03-16 09:48:24
1.下载HTMLTestRunner地址:http://tungwaiyip.info/software/HTMLTestRunner.html 2.下载的HTMLTestRunner.py是针对python2写的,所以针对python3需要适当更改其内容: 下面更改内容转载自博客园-微微笑 1. 修改的地方 问题一:No module named StringIO 原因:python 3 中 没有 StringIO 这个模块。这里我们需要使用io 这个模块来代替。 解决方法: 第94行引入的名称要改,从 import StringIO 改成import io。 相应的,539行 self.outputBuffer = StringIO.StringIO() 要改成self.outputBuffer = io.BytesIO() 问题二:AttributeError: 'dict' object has no attribute 'has_key' 原因:python 3 字典类型的object 已经不支持 has_key函数,我们需要使用in 来进行遍历。 解决方法: 定位到642行,if not rmap.has_key(cls): 需要换成 if not cls in rmap: 问题三:'str' object has no attribute 'decode' 原因