簡體   English   中英

將整數轉換為其ascii值的字符串

[英]Convert an integer into a string of its ascii values

給定一個號碼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'返回' ' 這是什么原因? 謝謝!


PS:
我想要反轉這個問題的過程,即根據字符串中每個字符(數字)的ascii值將整數轉換為字符串。 但閱讀這個問題不是回答這個問題的必要條件。

嘗試這個:

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將每個塊轉換為chr ,然后使用join將它們join

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
>>> 

您可以將\\ x附加到數字,因為這會打印'p':

print '\x70'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM