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

时间:2016-04-11 13:40:27

标签: string list python-3.x join ascii

我正在尝试编写一个带有字符串txt的函数,并返回该字符串的字符的ascii数字的int。它还需要第二个参数n,它是一个指定每个字符应转换为的位数的int。 n的默认值是3.n始终是> 3,字符串输入始终为非空。

示例输出:

string_to_number('fff')
102102102

string_to_number('ABBA', n = 4)
65006600660065

我目前的策略是通过将txt转换为列表来将ord拆分为其字符。然后,我将字符转换为['102', '102', '102']值,并将其附加到新列表中。然后我尝试将这个新列表中的元素组合成一个数字(例如,我将从['102102102']转到def string_to_number(txt, n=3): characters = list(txt) ord_values = [] for character in characters: ord_values.append(ord(character)) joined_ord_values = ''.join(ord_values) final_number = int(joined_ord_values[0]) return final_number 。然后我尝试转换此列表的第一个元素(也就是唯一的元素),到整数。我当前的代码如下:

Type Error

问题是我得到if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $user_count_id="u".$user_count; $user_count++; $user_list[$user_count_id]=$row; } } 。我可以编写成功返回单字符字符串整数的代码,但是当涉及包含多个字符的字符串时,由于此类型错误,我无法解决。有没有办法解决这个问题。谢谢,如果这很长,请道歉。

2 个答案:

答案 0 :(得分:1)

试试这个:

def string_to_number(text, n=3):
    return int(''.join('{:0>{}}'.format(ord(c), n) for c in text))

print(string_to_number('fff'))
print(string_to_number('ABBA', n=4))

输出:

102102102
65006600660065

编辑,没有列表理解,正如OP在评论中提到的那样

def string_to_number(text, n=3):
    l = []
    for c in text:
        l.append('{:0>{}}'.format(ord(c), n))
    return int(''.join(l))

有用的链接:

答案 1 :(得分:0)

join方法需要一个字符串数组,因此您需要将ASCII代码转换为字符串。这几乎完成了它:

ord_values.append(str(ord(character)))

除了它不符合您的位数要求。