Python3 中的 ASCii 问题



我正在尝试将一串 varchar 转换为 ascii。然后我试图让它使任何不是 3 位数字的数字前面都有一个 0。然后我尝试在字符串的最开头添加一个 1,然后我试图让它成为一个可以应用数学的大数字。

我尝试了很多不同的编码技术。我得到的最接近的如下:

s = 'Ak'
for c in s:
mgk = (''.join(str(ord(c)) for c in s))
num = [mgk]
var = 1
num.insert(0, var)
mgc = lambda num: int(''.join(str(i) for i in num))
num = mgc(num)
print(num)

使用此代码,我得到输出:165107

它几乎完全在做我需要做的事情,但它从 ord(A) 中取出 0,即 65。我希望它是 165。其他一切似乎都很好。我正在使用"%03d"%插入0。

我希望它的工作方式是:

从一串数字和字母中获取 ord() 值。

如果 ord() 值小于 100(例如:A = 65,则添加 0 使其成为 3 位数字)

取 ord() 值并将它们组合成 1 个数字。 0 需要从 65 中保持。 然后将一个添加到列表中。 所以基本上输出将如下所示:

1065107

我想确保我能把这个数字应用到它上面。

我也有这段代码:

s = 'Ak'
for c in s:
s = ord(c)
s = '%03d'%s
mgk = (''.join(str(s)))
s = [mgk]
var = 1
s.insert(0, var)
mgc = lambda s: int(''.join(str(i) for i in s))
s = mgc(s)
print(s)

但是它会将每个字母计为自己的一个元素,它不会将它们组合在一起,我只想要第一个数字前面的那个。

当数字转换为整数时,它

这是你想要的吗?我有点困惑:

a = 'Ak'
result = '1' + ''.join(str(f'{ord(char):03d}') for char in a)
print(result) # 1065107
# to make it a number just do:
my_int = int(result)

最新更新