关闭

Python刷题笔记(3)- 16进制和ascii码互转

标签: python
1322人阅读 评论(1) 收藏 举报
分类:

今天看了下等级标示,原来kyu上面还有dan的等级,升级路漫漫,今天是5kyu题目

题目:

Write a module Converter that can take ASCII text and convert it tohexadecimal. The class should also be able to take hexadecimal andconvert it to ASCII text.

Example

Converter.to_hex("Look mom, no hands")
=> "4c6f6f6b206d6f6d2c206e6f2068616e6473"

Converter.to_ascii("4c6f6f6b206d6f6d2c206e6f2068616e6473")
=> "Look mom, no hands"

中文简介:

就是写个ASCII码和16进制的转换器,可以互相转换。

想法:

1、字符串转16进制,直接使用ord()函数然后逐个转换为16进制,再将16进制数转化成字符串形式加入到列表,再把列表合成字符串返回

2、16进制转换字符串,间隔为2历遍字符串,然后将16进制字符串转换成10进制数字,用char()函数转换为ASCII码加入列表,然后把列表合成字符串返回。

3、int(str,16)可以实现字符串转换成16进制,str()实现转换字符串,hex()函数转换为16进制,但是返回的是0x00形式

实现:

class Converter():
    @staticmethod
    def to_ascii(h):
        list_s = []
        for i in range(0,len(h),2):
            list_s.append(chr(int(h[i:i+2].upper(),16)))
        return ''.join(list_s)
    @staticmethod
    def to_hex(s):
        list_h = []
        for c in s:
            list_h.append(str(hex(ord(c)))[-2:]) #取hex转换16进制的后两位
        return ''.join(list_h)

比较总结:

提交后看到别人的方法实在是简单。。直接使用系统函数encode("hex")和decode("hex")就解决了。。感觉有点作弊啊。。

0
0
查看评论

python 二进制、十六进制、ascii码互转

1.bin(数字)十进制-》二进制,有0b,用replace('0b','')     eg:>>> print bin(97).replace('0b','') 1100001...
  • u010668907
  • u010668907
  • 2016-01-26 22:08
  • 5958

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,这里详细列举了整数之间的进制转换,以及整数、字符串、字节串三者之间的相互转换。当然仅仅是抛砖引玉,有更好更简单的方法,欢迎欢迎
  • crylearner
  • crylearner
  • 2014-08-27 00:19
  • 171810

python将字符串转成16进制的ASCii码的值

binascii.a2b_hex(hexstr) binascii.unhexlify(hexstr) Return the binary data represented by the hexadecimal string hexstr. This function is the i...
  • lyle2000w
  • lyle2000w
  • 2012-01-25 17:50
  • 11097

[Python] 十六进制整数与ASCii编码字符串相互转换

在使用Pyserial与STM32进行通讯时,遇到了需要将十六进制整数以Ascii码编码的字符串进行发送并且将接收到的Ascii码编码的字符串转换成十六进制整型的问题。查阅网上的资料后,均没有符合要求的,遂结合各家之长,用了以下方法。
  • sinat_21258931
  • sinat_21258931
  • 2017-04-25 13:42
  • 3419

Python 字符ASCII与数字之间的转化

Python 用到了一个将一个数字转化为  对应ASCII  的地方。。。 结果习惯性的用了  ‘a’+1 之类的  或者int('a')   , 直接报错== 后来查了查才知道--- 规则== 用的是 ord('a'...
  • u013652219
  • u013652219
  • 2014-11-26 23:20
  • 11282

Python3进制转换

1.进制的表示 二进制:0b 八进制:0o 16进制:0x 2.进制的转换dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为二进制为:", bin(dec)) print(&q...
  • riba2534
  • riba2534
  • 2017-04-04 11:16
  • 830

python常用的十进制、16进制、字符串、字节串之间的转换

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x1016进制转10进制: int('0x1...
  • woxiaozhi
  • woxiaozhi
  • 2017-02-28 16:37
  • 1291

Python3 使用 unicode-escape 处理 unicode 16进制字符串编解码问题

经常遇到 ' \uxxxx ' 的16进制字符串编解码问题,使用 unicode-escape 解决之。
  • chuatony
  • chuatony
  • 2017-05-22 18:45
  • 1197

python模块之binascii

二进制和ASCII互转 Python版本:1.5及以后版本          binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法。通常情况不会直接使用这些功能,而是使用像UU,ba...
  • B_H_L
  • B_H_L
  • 2013-07-17 16:35
  • 14343

使用python将用ASCII表示的16进制unicode编码的ASCII字符串转换为unicode字符串

汉字“你”的unicode编码为u/u4F60,将该编码用ASCII字符表示为字符串“4F60”。按照这样的规则将一字符串编码后,如何还原为unicode字符串?可以通过使用两个Python内置的函数来简单解决这个问题。    int( [x [, radix] ]) ...
  • linuxnewer
  • linuxnewer
  • 2008-01-03 16:56
  • 7584
    个人资料
    • 访问:9862次
    • 积分:199
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论