编一个函数,功能是将十进制数转换成二至十六之间的r进制数字字符串
时间: 2024-02-21 12:57:13 浏览: 75
C++实现十六进制字符串转换为十进制整数的方法
好的,以下是一个可以将十进制数转换为任意进制的函数:
```python
def decimal_to_r(decimal, r):
"""
将十进制数转换为任意进制的数字字符串
:param decimal: 十进制数
:param r: 目标进制,取值范围为二至十六
:return: 目标进制下的数字字符串
"""
# 定义字母表,用于表示十六进制中的 A~F
letters = "0123456789ABCDEF"
# 如果目标进制不在取值范围内,抛出异常
if r < 2 or r > 16:
raise ValueError("目标进制取值范围为二至十六")
# 如果十进制数为 0,直接返回 "0"
if decimal == 0:
return "0"
# 如果十进制数为负数,去绝对值并在结果前添加负号
if decimal < 0:
decimal = abs(decimal)
sign = "-"
else:
sign = ""
# 定义一个空字符串,用于存放转换后的数字字符串
result = ""
# 不断将十进制数除以目标进制,得到商和余数,直到商为 0 为止
while decimal > 0:
quotient, remainder = divmod(decimal, r)
result = letters[remainder] + result
decimal = quotient
# 返回结果字符串
return sign + result
```
使用示例:
```python
>>> decimal_to_r(10, 2) # 将十进制数 10 转换为二进制数
'1010'
>>> decimal_to_r(10, 8) # 将十进制数 10 转换为八进制数
'12'
>>> decimal_to_r(10, 16) # 将十进制数 10 转换为十六进制数
'A'
```
阅读全文