将整数转换为其ascii值的字符串

2024-10-02 22:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个数字number,它的数字被分成长度的部分n(默认值n是3),其中每个组代表一些ascii值,我想将number转换成这些ascii字符的字符串。例如:

n                number     Output
==================================
3                    70          F
3           65066066065       ABBA
4        65006600660065       ABBA

注意,数字中没有前导0,因此第一个ascii值不一定用n数字表示。

我当前的代码如下:

def number_to_string(number, n=3):
    number = str(number)
    segment = []

    while number:
        segment.append(number[:n])
        number = number[n:]

    return str(''.join('{:0>{}}'.format(chr(segment), n) for segment in number))

预期产出:

number_to_string(70)
'F'

number_to_string(65066066065)
'ABBA'

number_to_string(65006600660065, n=4)
'ABBA'

但是,我当前的代码返回一个空字符串。例如,它返回' ',而不是“F”。有什么原因吗?谢谢您!


备注:
我想反转this question的过程,即根据字符串中每个字符(数字)的ascii值将整数转换为字符串。但阅读这个问题并不是回答这个问题的必要条件。


Tags: to字符串代码numberoutputstringdefascii
3条回答
def numToStr(inp):
"""Take a number and make a sequence of bytes in a string"""
out=""
while inp!=0:
    out=chr(inp & 255)+out
    inp=inp>>8
print "num2string:", out 
return out

这有用吗?

这就是你想要的吗?

def num_to_string(num, leng):
    string = ""
    for i in range(0,len(str(num)),leng):
        n = str(num)[i:i+2]
        string += chr(int(n))
    print string

输出:

>>> ================================ RESTART ================================
>>> 
>>> num_to_string(650065006600,4)
AAB
>>> num_to_string(650650660,3)
AAB
>>> num_to_string(656566,2)
AAB
>>> 

试试这个:

import re

def number_to_string(num, n=3):
    num_str = str(num)
    if len(num_str) < n:
        num_str = '0' * (n-len(num_str)) + num_str
    elif len(num_str) % n != 0:
        num_str = '0'*(n-len(num_str)%n) + num_str
    print(num_str)

    chars = re.findall('.'*n, num_str)
    l = [chr(int(i)) for i in chars]
    return ''.join(l)

首先将给定的数字(转换为字符串)填充所需的零个数,以便可以将每个数字平均拆分为相等数量的字符。然后使用re将字符串分割成大小为n的段。最后使用chr将每个块转换为字符,然后使用join将它们连接起来。

相关问题 更多 >