我試圖將最大長度爲40個字符的字母數字字符串轉換爲儘可能小的整數,以便我們可以輕鬆地保存並從數據庫中檢索。我不知道是否存在任何python方法或任何我們可以使用的簡單算法。具體而言,我的字符串將只有字符0-9和a-g。所以請提供任何建議,以便我們可以將字符串唯一地轉換爲int,反之亦然。我使用Python 2.7美分OS 6.5在python中將字母數字字符串轉換爲int,反之亦然
1
A
回答
2
這並不難:
def str2int(s, chars):
i = 0
for c in reversed(s):
i *= len(chars)
i += chars.index(c)
return i
def int2str(i, chars):
s = ""
while i:
s += chars[i % len(chars)]
i //= len(chars)
return s
例子:
>>> chars = "".join(str(n) for n in range(10)) + "abcdefg"
>>> str2int("0235abg02", chars)
14354195089
>>> int2str(_, chars)
'0235abg02'
基本上,如果你想ň字符編碼爲您解讀一個整數它作爲base-n。
+0
偉大的整數大小似乎迅速增加與字符串大小,所以任何想法可能是最大的整數大小,我們可以得到什麼時候它會發生?當我們擁有大部分(可能是全部)字母或數字或其他任何東西時。你真的建議通過保存字符串本身進行這種轉換嗎? – RAFIQ 2015-03-13 07:35:30
+0
@RAFIQ使用大小爲_c_的字符集對長度爲_n_的任意字符串進行編碼的最大大小爲c^n。這是一個信息論下限,不能改進。當我編碼只包含最後一個字符的字符串時,這發生在我上面的例子中,例如「gggg」。除非您確定這樣做會顯着降低項目的硬件存儲成本,否則我不會建議這種轉換。 – orlp 2015-03-13 07:41:17
1
相關問題
- 1. Python將字符串轉換爲字符串,反之亦然
- 2. 將大寫字母轉換爲小寫字母,反之亦然字符串
- 3. 如何在Linux(gcc)中將int轉換爲字符/字符串,反之亦然?
- 4. 將字節數組轉換爲字符串,反之亦然
- 5. 將字符串轉換爲數字,反之亦然C(NOT C++)
- 6. 將字母轉換爲數字或反之亦然
- 7. 轉換Unicode字符串,反之亦然
- 8. 將套接字轉換爲字符串,反之亦然
- 9. 在Java中將字符串轉換爲字符串,反之亦然
- 10. 如何將小寫字符串轉換爲大寫字母,反之亦然?
- 11. 將紅寶石數組轉換爲字符串,反之亦然
- 12. 如何在Excel中將字符串轉換爲數字,反之亦然
- 13. 將字符串轉換爲golang中的json,反之亦然?
- 14. 將int值轉換爲3字節數組(反之亦然)
- 15. 將字符串轉換爲十六進制字符串,反之亦然在Vb.Net
- 16. Javascript - 轉換顏色(數字 - >字符串)反之亦然
- 17. 如何將字符串轉換爲IP地址,反之亦然
- 18. 將音頻,mp3文件轉換爲字符串,反之亦然
- 19. 如何將字符串轉換爲Java文件,反之亦然?
- 20. Java將字符串轉換爲md5,反之亦然
- 21. 將字符串轉換爲鍵,反之亦然
- 22. 將二進制文件轉換爲字符串,反之亦然
- 23. 將字符串轉換爲位序列(反之亦然)
- 24. 將格式化字符串轉換爲雙精度字符串,反之亦然
- 25. 在C中將全角字符轉換爲hankaku,反之亦然#
- 26. 將字節轉換爲int,反之亦然
- 27. 在R中,在字符串中將大寫字母切換爲小寫字母,反之亦然
- 28. 變換JSON對象爲數字字符串,反之亦然
- 29. 在JavaScript中將字符串轉換爲整數數組,反之亦然
- 30. 將字節轉換爲字符串,反之亦然在不同的平臺上
如何將字符轉換爲int?什麼將「a0b3」作爲一個整數?您是否希望進行一些轉換,例如通過使用ASCII值爲字符a-g? – 2015-03-13 07:15:04
你想從字符串中選擇數字還是將整個字符串「序列化」爲整數?後者肯定不會工作 - 當然不是40字節長的字符串......另外,字符串可能是寫入數據庫的第二常用數據類型 - 爲什麼要轉換它呢? – sebastian 2015-03-13 07:15:15
@TimBiegeleisen不一定,但任何事情都可以,只要我們可以輕鬆地恢復轉換,希望這是明確的,需要獨特的映射 – RAFIQ 2015-03-13 07:18:31