怎么去自己使用自定义函数,从而把十进制的m(整数换算成其他进制的R?(字符串)
可以使用以下方式(decimal_to_base为函数,输入两个数,m为十进制数,R为其它进制,测试时一行输入这两个数,空格分隔):
def decimal_to_base(m, R):
if not isinstance(m, int) or m < 0:
raise ValueError("m 必须是整数。")
if not isinstance(R, int) or R < 2 or R > 16:
raise ValueError("R 必须是2-16之间的整数。")
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ""
while m > 0:
remainder = m % R
result = digits[remainder] + result
m = m // R
return result or "0"
m, R = map(int, input().split())
result = decimal_to_base(m, R)
print(result)
测试输入(15转为16进制):
15 16
输出:
F
输入(2转为2进制):
2 2
输出:
10
分情况:
其他情况:
def convert(x, base):
res = ''
while x > 0:
r = x % base
x //= base
res += '0123456789abcdef'[r]
return res[::-1] or '0' # 特殊处理0的情况
其实这个函数是通用的,转换为2-16进制都可以。大于16进制没有固定的表示法,所以不做实现。
使用示例:
>>> convert(10, 4)
'22'
>>> convert(255, 16)
'ff'
>>> convert(10, 8)
'12'
>>> convert(7, 2)
'111'
创建一个名为my_file.txt的文件,文件有如下内容:
全网同名:
这是Python系列的第十八篇文章
https://feige.blog.csdn.net/
通过二进制的方式(rb)打开图片,针对二进制文件(图片,视频等)的话只能使用rb方式来读取文件。
f = open(‘my_file.txt’, ‘rb’)
f_bytes = f.read()
print(f_bytes)
print(f_bytes.decode(‘utf-8’))
f.close()
运行结果是:
b'??¨??????????????????é£???¥
è????ˉPython?3?????????????????ˉ???????
https://feige.blog.csdn.net/'
全网同名:
这是Python系列的第十八篇文章
https://feige.blog.csdn.net/
*********readline方法读取全部内容**********
全网同名:
这是Python系列的第十八篇文章
可以使用Python的内置函数bin()
、oct()
、hex()
来进行进制转换,但如果需要自定义转换进制,可以使用循环和取余实现,具体步骤如下: 1. 编写一个自定义函数decimal_to_R(num, R)
,其中num
表示待转换的十进制整数,R
表示目标进制,函数的返回值为目标进制下的字符串表示。 2. 使用循环来不断对num
进行求余和整除,求余部分可以映射为目标进制下的某一位数,添加到列表中,并更新num
的值,如果num
变为0,则退出循环。 3. 将列表中的元素反转后合并为字符串,成为最终结果,返回该字符串即可。
示例代码如下:
def decimal_to_R(num, R):
# num: 十进制整数
# R: 目标进制
# 返回值: 目标进制下的字符串表示
if num == 0:
return '0'
res = []
while num:
res.append(str(num % R))
num //= R
res.reverse()
return ''.join(res)
# 示例
print(decimal_to_R(59, 2)) # 输出:111011
在示例中,将十进制整数59转换为二进制表示,结果为111011
。