当前位置:网站首页>菜菜的刷题日记 | 蓝桥杯 — 十六进制转八进制(纯手撕版)附进制转换笔记
菜菜的刷题日记 | 蓝桥杯 — 十六进制转八进制(纯手撕版)附进制转换笔记
2022-04-23 06:19:00 【猿知】

系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子
万万没想到啊,回老家过年断更的几天之后,我会因为无聊在除夕这天做了会儿题,然后写篇题解。
【题目】

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T51
【我的代码】
我的思路是:首先十六进制转二进制,然后再转八进制,这里直接创建两个字典用来存放数据。代码需要注意二进制是倒着匹配的,而且当不满三个数时需要补0,其他的大家应该都能看明白。
book1 = {
'0': '0000',
'1': '0001',
'2': '0010',
'3': '0011',
'4': '0100',
'5': '0101',
'6': '0110',
'7': '0111',
'8': '1000',
'9': '1001',
'A': '1010',
'B': '1011',
'C': '1100',
'D': '1101',
'E': '1110',
'F': '1111'
}
book2 = {
'000': '0',
'001': '1',
'010': '2',
'011': '3',
'100': '4',
'101': '5',
'110': '6',
'111': '7'
}
n = int(input())
sn = ['' for _ in range(n)]
for i in range(n):
sn[i] = input()
for s in sn: #获取二进制形式数
num = ''
for j in s:
num += book1[j]
ss = ''
t = ''
count = 0
for k in num[::-1]:
t = k+t
count += 1
if count == 3: #三个数一组,当三个以后进行转换
count = 0
ss = book2[t] + ss
t = ''
if count == 1:#不够三个时两种情况,分别前方补0,注意不能写+=
t = '00'+t
ss = book2[t] + ss
if count == 2:
t = '0' + t
ss = book2[t]+ss
print(int(ss))
【进制转换笔记】
| 2进制 | 8进制 | 10进制 | 16进制 | |
|---|---|---|---|---|
| 2进制 | — | bin(int(n,8)) | bin(int(n,10)) | bin(int(n,16)) |
| 8进制 | oct(int(n,2)) | — | oct(int(n,10)) | oct(int(n,16)) |
| 10进制 | int(n,2) | int(n,8) | — | int(n,16) |
| 16进制 | hex(int(n,2)) | hex(int(n,8)) | hex(int(n,10)) | — |
使用Python内置的函数进行进制转换,大家不难发现都是先转换成十进制再转换成对应的进制,我们简单举一个例子,其他的不再赘述:
# 8进制转16进制:8->10->16
n=input()
print(hex(int(n,8)))
输入:1010
输出:0x208
如果不想带前两位的标记,可使用如下方法:
- 方法一:切片,将得到的结果从第三个字符开始取结果即可
# 10进制转换成2进制
n=int(input())
print(bin(n)[2:]) # 切片操作
输入:10
输出:12
- 方法二:使用format函数进行格式化,format函数自带转换功能,yyds
n=input()
print("{:b}".format(int(n,8)))
# 先将8进制的数转换为10进制,
# 然后在format的槽中添加一个b,等价于实现了bin函数的功能
# 但是此结果是不带有0b前缀的
输入:1010
输出:1000001000
其他进制:(n右边的是原始进制)
print("{:o}".format(int(n,16))) # 其他类型转换为8进制
print("{:x}".format(int(n,8))) # 其他类型转换为16进制
【思考】
新年快乐!
Python力扣题解系列持续更新,欢迎
点赞收藏+关注
上一篇:菜菜的刷题日记 | 20.有效的括号(B站笔试题)
下一篇:菜菜的刷题日记 | 蓝桥杯 — 子串分值【第十一届】【省赛】【A组】
本人水平有限,文章中不足之处欢迎下方评论区批评指正~如果感觉对你有帮助,点个赞 支持一下吧 ~
不定期分享 有趣、有料、有营养内容,欢迎 订阅关注 我的博客 ,期待在这与你相遇 ~
版权声明
本文为[猿知]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Magic_Zsir/article/details/122760733
边栏推荐
猜你喜欢

pytorch:关于GradReverseLayer实现的一个坑

Machine vision series (01) -- Overview

Typora语法详解(一)

北峰通信助力湛江市消防支队构建PDT无线通信系统

The people of Beifeng have been taking action

USO technology was invited to share the technical framework and challenges of AI synthetic virtual characters at lvson2020 conference

不需要破解markdown编辑工具Typora

Flexible blind patch of ad hoc network | Beifeng oil and gas field survey solution

Tensorflow安装后ImportError: DLL load failed: 找不到指定的模块,且国内安装缓慢

浅谈BFC(块格式化上下文)
随机推荐
小程序wx.previewMedia相关问题解决-日常踩坑
PyTorch 13. Nested functions and closures (dog head)
海南凤凰机场智能通信解决方案
自定义钉钉机器人进行报警
JDBC连接池
Emergency air space integrated communication system scheme of Guangxi Power Grid
可视化之路(十)分割画布函数详解
获取字符格式的当前时间
机器视觉系列(02)---TensorFlow2.3 + win10 + GPU安装
Unable to determine the device handle for GPU 0000:02:00.0: GPU is lost.
数据分析学习(一)数据分析和Numpy基础
枫桥学院开元名庭酒店DMR系统解决方案
go iris框架实现多服务Demo:通过(监听8083端口的)服务1中的接口启动(监听8084端口的)服务2
开发板如何ping通百度
jvm知识点汇总-持续更新
理解补码的要点
Jiangning hospital DMR system solution
Statement of American photography technology suing Tianmu media for using volcanic engine infringement code
Intelligent communication solution of Hainan Phoenix Airport
关于'enum'枚举类型以及结构体的问题。