【发布时间】:2021-05-10 17:06:15
【问题描述】:
例如我有一个字符串
>>> sample = "Hello World!"
我想做一个可以将sample 转换为int 的函数。我知道chr() 和ord()。到目前为止我用过这个:
字符串转整数
>>> 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
我找到了这个解决方案,但是速度很慢,有人知道要改进吗
【问题讨论】:
-
这是不可能的,因为数字的长度不同(确切地说是数字字符串),没有人能分辨出哪个数字属于哪个数字。
-
@MichaelButscher 我找到了解决方案,但速度很慢。你能告诉我在编辑中更好的解决方案吗
-
如何在解决方案中对字符串使用位移运算符?
-
将所有 ASCII 组合在一起形成一个大字符串。你知道 ASCII 值有不同的大小,比如
0~255,那么你怎么能确定你需要什么字符呢?避免将所有 ASCII 组合在一起,而是使用 ASCII 列表然后转换为字符串。此外,您编辑的问题不是返回的有效方式 -
@SayanipDutta 通过将字符串转换为字节
标签: python string type-conversion integer