[英]Converting string to integer and vice versa in Python
例如,我有一個字符串
>>> sample = "Hello World!"
我想做一個可以將sample
轉換為整數的 function。 我知道chr()
和ord()
。 到目前為止我已經使用了這個:
對於字符串到 Int
>>> res="".join([str(ord(char)) for char in sample])
>>> print(res)
72101108108111328711111410810033
現在問題出現了。 如何將res
轉換回sample
。 任何建議將不勝感激。
Note: sample string can also have unicode characters in it
編輯:
nchars=len(sample)
res = sum(ord(sample[byte])<<8*(nchars-byte-1) for byte in range(nchars)) # string to int
print(''.join(chr((res>>8*(nchars-byte-1))&0xFF) for byte in range(nchars))) #int to string
我找到了這個解決方案,但這很慢有人知道改進這個
我正在保存由“”分隔的數字,因此可以通過更輕松的轉換將 go 恢復
這很有效並且很簡單:
i = "Hello World"
num = ""
for char in i:
num += str(ord(char))+" "
print(''.join(num.split()))
back = ""
for n in num.split():
back += chr(int(n))
print(back)
output:
721011081081113287111114108100
Hello World
sample = "Hello World!"
d1={k:str(ord(v)) for k,v in list(enumerate(sample))}
''.join(d1.values())
'72101108108111328711111410810033'
res1="".join([chr(int(char)) for char in d1.values()])
res1
'Hello World!'
為了避免which ord(chr) belongs to which chr?
我們需要一個像數據結構這樣的映射,而 dict 是存儲每個字符串並使用enumerate
將它們分配給唯一鍵的最佳方法,這將動態生成鍵。
我們的d1
看起來像這樣:
{0: '72',
1: '101',
2: '108',
3: '108',
4: '111',
5: '32',
6: '87',
7: '111',
8: '114',
9: '108',
10: '100',
11: '33'}
然后是簡單的部分,將字符串值轉換為 int 並在其上應用chr
以轉換回字符串。
由於OP
不想使用多個變量或數據結構。
sample = "Hello World!"
l_n=[str(ord(i))+str(ord('@')) for i in list(sample)]
text="".join(l_n)
n_l=[chr(int(i)) for i in text.split('64') if i.isnumeric()]
''.join(n_l)
問題是我們需要知道在哪里應用char
所以我在每個字母上添加了一個額外的@
以便很容易將它轉換回來
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.