【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-进制转换

举报
剑豪 发表于 2023/06/23 09:58:29 2023/06/23
【摘要】 二进制、八进制、十进制、十六进制是数字的不同表示方式。它们分别使用不同的进制基数(也称为“基数”或“底数”)来表示数字。

前言

二进制、八进制、十进制、十六进制是数字的不同表示方式。它们分别使用不同的进制基数(也称为“基数”或“底数”)来表示数字。

十进制就是我们平时使用的数字系统,使用十个数字0到9来表示数字。例如,数字1234就是1×1000 + 2×100 + 3×10 + 4×1。

而二进制使用基数2,只有两个数字0和1来表示数字。例如,二进制数1001表示1×2³ + 0×2² + 0×2¹ + 1×2⁰,即9。计算机中所有的数据都是以二进制表示的。

八进制使用基数8,使用数字0到7来表示数字。例如,八进制数123表示1×8² + 2×8¹ + 3×8⁰,即83。

十六进制使用基数16,使用数字0到9和字母A到F(大小写均可)来表示数字。例如,十六进制数2B表示2×16¹ + 11×16⁰,即43。十六进制常用于计算机中,因为它能够更紧凑地表示二进制数字。

不同进制表示的数字,在不同的场景下有不同的应用,例如二进制在计算机中的应用更为普遍。

以下是将二进制、八进制、十进制、十六进制转换成字符串的Python代码示例:

  1. 将二进制转换成字符串:

binary_number = "01000001 01000010 01000011 01000100"
binary_list = binary_number.split(" ")
string = ""
for b in binary_list:
    string += chr(int(b, 2))
print(string)

输出结果为:ABCD

  1. 将八进制转换成字符串:

octal_number = "101 102 103 104"
octal_list = octal_number.split(" ")
string = ""
for o in octal_list:
    string += chr(int(o, 8))
print(string)

输出结果为:efgh

  1. 将十进制转换成字符串:

decimal_number = "65 66 67 68"
decimal_list = decimal_number.split(" ")
string = ""
for d in decimal_list:
    string += chr(int(d))
print(string)

输出结果为:ABCD

  1. 将十六进制转换成字符串:

hex_number = "41 42 43 44"
hex_list = hex_number.split(" ")
string = ""
for h in hex_list:
    string += chr(int(h, 16))
print(string)

输出结果为:ABCD

一、进制转换

1.打开题目

在这里插入图片描述

2.解题

text = "b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e"
li=text.split(" ")
list=[]
def Binary(str1):
    s=str1[1:]
    s2=int(s,2)
    list.append(chr(s2))
def Octonary(str1):
    s=str1[1:]
    s2=int(s,8)
    list.append(chr(s2))
def Decimal(str1):
    s=str1[1:]
    s2=int(s)
    list.append(chr(s2))
def Hex(str1):
    s=str1[1:]
    s2=int(s,16)
    list.append(chr(s2))
​
for i in li:
    if i.startswith("b"):
        Binary(i)
    elif i.startswith("o"):
        Octonary(i)
    elif i.startswith("d"):
        Decimal(i)
    elif i.startswith("x"):
        Hex(i)
print(''.join(list))

在这里插入图片描述 得到flag:1e4bf81a6394de5abc005ac6e39a387b

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。