python 怎么将python3 字符串转byte换为byte

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&python字符串str和字节数组相互转化
[转自链接]/code-snippet/1662/python-string-str-zijieshu-group-together-zhuanhua
# bytes object
b = b"example"
# str object
s = "example"
# str to bytes
bytes(s, encoding = "utf8")
# bytes to str
这一句有错误
str(b, encoding = "utf-8")
# an alternative method
# str to bytes
str.encode(s)
# bytes to str
bytes.decode(b)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 95191
博文数量: 46
博客积分: 929
博客等级: 准尉
技术积分: 500
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 系统运维
如果一次遇到:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 这样的错误,然后到网上找找解决方案可以接受,如果多次遇到这样的问题,那就是自己的问题了。web开发,数据从各处(如果不明确encode)收集到业务层(指明是utf8)处理,往往会有因各个源字符集不同导致处理失败的情况,就比如上面这个错误。到网上一看,python字符集的处理大家一致感觉还是挺麻烦的,还是先来看看http://en.wikipedia.org/wiki/Character_encoding .现在要关心的还是该如何正确转换中文和UTF8,解决开始的问题。gb2312& |gbk&&&& |&&& unicodebig5&&& |...&&&& |&&&&&& utf8&&& gb2312,gbk,big5等要转换为utf8,则要先到(decode)unicode,再到(encode)utf8:C1 0 1 2 3 4 5 6 7 8 9 A B C D E FA   痢 立 粒 沥 隶 力 璃 哩 俩 联 莲 连 镰 廉 怜B 涟 帘 敛 脸 链 恋 炼 练 粮 凉 梁 粱 良 两 辆 量C 晾 亮 谅 撩 聊 僚 疗 燎 寥 辽 潦 了 撂 镣 廖 料D 列 裂 烈 劣 猎 琳 林 磷 霖 临 邻 鳞 淋 凛 赁 吝E 拎 玲 菱 零 龄 铃 伶 羚 凌 灵 陵 岭 领 另 令 溜F 琉 榴 硫 馏 留 刘 瘤 流 柳 六 龙 聋 咙 笼 窿查gbk表知汉字“刘”的gbk码是'\xc1\xf5',首先用decode到unicode:>>> '\xc1\xf5'.decode('gbk')u'\u5218'再由unicode到utf8:>>> u'\u5218'.encode('utf8')'\xe5\x88\x98'&&& ->1>>> 在utf8为默认的系统上看看“刘”的utf8:>>> "刘"'\xe5\x88\x98'&&& ->2和1对得上,再来看看在gbk为默认的系统上看看“刘”的gbk:>>> "刘"'\xc1\xf5'>>>其他的也就类似了,知道了这个关系后,字符串编码的转换就不再难做了。回到开头的问题,'ascii' codec can't decode byte 0xe6,说明ascii不认识0xe6...encode:/python/string_encode.htmdecode:/python/string_decode.htm==over==以前把utf8的分类搞错了好像,现在认为utf8和gb2312,gbk,big5是同等的位置。>>> '刘'.decode('gbk') 用gbk解压成unicodeu'\u5218'>>> '刘'.decode('gb2312')用gb2312解压成unicodeu'\u5218'>>> '刘'.decode('gb2312').encode('utf-8')用gb2312解压成unicode,再压缩成utf-8'\xe5\x88\x98'>>> '刘'.decode('gb2312').encode('gb2312')用gb2312解压成unicode,再压缩成gb2312
'\xc1\xf5'>>> '刘'.decode('gb2312').encode('gbk')用gb2312解压成unicode,再压缩成gbk'\xc1\xf5'>>> repr('刘') 刘的gb2312/gbk表示
"'\\xc1\\xf5'"
>>>==over==
阅读(9555) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。2013年9月 其他开发语言大版内专家分月排行榜第二2013年8月 其他开发语言大版内专家分月排行榜第二2013年7月 其他开发语言大版内专家分月排行榜第二2011年4月 PHP大版内专家分月排行榜第二
2013年10月 PHP大版内专家分月排行榜第三2013年5月 PHP大版内专家分月排行榜第三2013年4月 其他开发语言大版内专家分月排行榜第三2013年4月 PHP大版内专家分月排行榜第三2013年3月 其他开发语言大版内专家分月排行榜第三2011年5月 PHP大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。下次自动登录
现在的位置:
& 综合 & 正文
Python模块——struct(字节流,组包拆包实现)
我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组,字典。但是C语言中有些字节型的变量,在python中该如何实现呢?这点颇为重要,特别是要在网络上进行数据传输的话。
python提供了一个struct模块来提供转换。下面就介绍这个模块中的几个方法。
struct.pack():
struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息下面有所介绍。v1, v2, ...表示要转换的python值。下面的例子将两个整数转换为字符串(字节流):
&&& import struct&&& a=20&&& b=400&&& str=struct.pack('ii',a,b)
#转换成字节流,虽然还是字符串,但是可以在网络上传输&&& print len(str)
#ii 表示两个int8
#可以看到长度为8个字节,正好是两个int型数据的长度&&& print str
#二进制是乱码&&& print repr(str)'\x14\x00\x00\x00\x90\x01\x00\x00'
#其中十六进制的 0xx分别表示20和400&&&
由此我们就可以任意的进行组包了,比如下面一个打包的例子,只介绍其中的pack
format = "!HH%ds" % len(data)buffer = struct.pack(format,opcode,blocknumber,data)
我们要对一个数据进行打包,加上一些个包头,我们根据下面的格式符信息,知道H是unsigned short是2个字节,而s是char型。所以这个buffer就是2个字节的opcode,2个字节的blocknumber,和len长的char。
struct.unpack():
我们接着上面的例子运行:
&&& a1,a2=struct.unpack('ii',str)&&& print 'a1',a1a1 20&&& print 'a2=',a2a2= 400
可以看到 “ii”以四个字节为分界,把8个字节的str分成了两个int型的整数。
struct.calcsize():用来计算特定格式的输出的大小,是几个字节,比如:
&&& struct.calcsize('HH4s')8&&& struct.calcsize('ii')8&&&
&&& format='!HH%ds' % len('hello python')&&& struct.calcsize(format)16&&&
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 字符串转换成byte 的文章

 

随机推荐