python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换
先来个小例子:
test = "abcdef"
temp = numpy.fromstring(test,dtype=numpy.int8)
print(temp)
结果为:[ 97 98 99 100 101 102]
这样就ji简单实现了从字符串到acsii码的转换
下面做一下小的调整:
test = "abcdef"
temp = numpy.fromstring(test,dtype=numpy.int16)
print(temp)
我们把int8 改成了int16,再看看运行结果:[25185 25699 26213]
诶,这就变了,为什么呢?
我们在更改一下,换成int32呢?
报错了??
其实呢原理是这样的……
首先在64位机器上,共有4种int:int8/int16/int32/int64; 有3种float:float16/float32/float64
对于int8和int32之间的差别我就不解释了。
这个函数的原型是这样的:fromstring(string, dtype=None, count=-1, sep='') ,
第一个参数string就是我们要处理的字符串,这里是test(“abcdef”),
dtype就是我们要转换的类型,默认为float64,这个下面详细说,
count表示要处理的字符串的长度,count默认为-1,为负值时按字符串的实际长度来处理,这里count为6;count为整数时 假设为4,这只处理字符串前4位,即‘abcd’;count值不可以大于字符串中实际字母的个数,否则报错。
sep:当字符串中全为数字时,不管数字之间有没有分隔符,只要sep='',那么数字就按ascii的值解析;如果之间没有间隔,不管sep为不为空,数字也按ascii值解析;如果数字之间有间隔符, 而且sep='',数字按ascii值解析;如果数字之间有间隔符,sep等于间隔符,数字解析为数字值; 其中,空格不可以忽略,也作为一种间隔符。当字母数字混合时,如果有间隔符而且以数字开头的字符串,sep==间隔符, # 只解析前几个为数字,然后终止;其他情况都按ascii来解析。
下面我们来解释一下dtype的yon用法:
首先我们明确一下,python中用8个bit位来存储一个字符,所以字符串string中的每一个字符都占8位。
当dtype=int8时,用8个比特位来存储一个整数,当fromstring函数读取字符串string时,首先读取一个dtype的位数,这里即8位int,所以是读取一个字符来进行解析,这样便实现了从字符到ascii码的转换。
当dtype=int16时,用16个bit位来存储一个整数,当fromstring函数读取字符串string时,首先读取一个dtype的位数,这里即16位int,所以是读取2个字符来进行解析,这里是读取ab这两个字符进行解析,字符a在低位 字符b在高位,2个字符当作一个来处理,a的ascii码为97,二进制表示为:01100001,b的ascii码为98,二进制表示为:01100010.,放在一起为(a在低位b在高位):011100010 01100001,整个二进制转换为十进制即25185; 接下来依次处理cd、ef,相同的处理方式
当dtype=int32时,用16个bit位来存储一个整数,当fromstring函数读取字符串string时,首先读取一个dtype的位数,这里即32位int,所以是读取4个字符来进行解析,但是这里有个问题,如果每次读取4个字符进行处理,不能完全凑够4的倍数,就是说先读取abcd,在读取时就只剩下ef了,不够4了,所以这时候就要报错啦。
当dtypei为其他类型,都是相同的道理,当字符的个数不能刚好凑齐时,就会报错,显示 string size must be a multiple of element size.
python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换相关推荐
- MATLAB字符串和ASCII码的转换
字符串转ASCII码:abs,如:abs('a');abs('what'); ASCII码转字符串:char,如:char(97);char([97,98,99]);
- C语言 详解如何编写闪烁显示字符串的函数
如果要实现指定字符串在标准输出流(一般为显示器)上闪烁,可以定义如下函数: void bput(const char*s,int appe,int disa,int repe) 字符串s出现appe秒 ...
- 详解字符函数和字符串函数
文章目录 0. 前言 1.函数介绍及部分函数模拟实现 1.1 strlen 模拟实现 1.2 strcpy 模拟实现 1.3 strcat 模拟实现 1.4 strcmp 模拟实现 1.5 strnc ...
- C语言详解:函数递归专题
文章目录 函数递归 函数递归的定义和优缺点 递归的使用场景及必要条件 递归的细节说明 递归的习题讲解 1打印整数每一位 输入输出示例 解题思路 代码逻辑 2递归和非递归求n阶乘 输入输出示例 解题思路 ...
- C语言详解系列——函数的认识(4)函数的声明与定义,简单练习题
文章目录 函数的声明与定义 函数的声明 函数的定义 简单的练习题 写一个函数可以判断一个数是不是素数 写一个函数实现二分查找 写一个函数,每调用一次这个函数,就会将 num 的值增加1. 函数的声明与 ...
- C语言详解系列——函数的认识(5)函数递归与迭代
文章目录 函数递归 函数的迭代 函数递归 什么是函数递归?函数自己调用自己的编程技巧我们称为递归,函数递归通常会把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量 ...
- Python基础详解(十三):(视频符号化)将视频转换成ASCII符号形式展示出来
目录 一. 前言 二. 项目简介 三. 基本要求 四. 代码实现 4.1 安装ffmpeg.exe 4.2 安装you-get库 4.2.1 下载 4.2.2 检查视频信息 4.2.3 下载 mp3 ...
- c#字符型转化为asc_C#字符串和ASCII码的转换
//字符转ASCII码: public static int Asc(string character) { if (character.Length == 1) { System.Text.ASCI ...
- python函数练习题详解_Python练习题详解之函数3(小白友好)
Python练习题详解之函数3(小白友好) 你好!欢迎来到Python练习题详解系列.为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题.欢迎阅读!奥利给! 题目1 编 ...
最新文章
- Ant Design Pro 组件事件绑定 Input onChange
- ​​​​​​​2016最新CocoaPods安装与使用
- eclipse java代码某一行需要修改注释_看看这些Java代码开发规范吧!你好,我好,大家好!...
- 使用 ASP.NET 配置类
- 【渝粤教育】国家开放大学2018年春季 0050-21T民族理论与民族政策 参考试题
- 左右滑动实现activity之间的跳转
- 计算机平面设计专业有哪些课程,计算机平面设计专业课程有哪些?
- 其实Go 1.17 就支持泛型了,具体该怎么用呢?
- 发布Android开源库,看这个文章就够了!
- mysql数据库各项参数查询
- 【Codeforces 760 B Frodo and pillows】+ 二分
- java对pdf分割_PDFBox分割PDF文档
- paddle.paramattr转换为torch框架下算法
- 用yolov5做人脸检测
- 【原创】2009年太白山穿越
- 为防手机游戏成瘾,科技巨头纷纷增加数位健康应用
- 医疗电子方案——血压计方案
- 《JAVA》课程设计报告--企业人力资源管理系统
- 区块链零售市场价值到2023年将飙升29倍
- SSO(Single Sign On)