我正在尝试将 ASCII 字符串来回转换为其二进制表示,如下所示。
s=chr(0)*15 + chr(0x01)
bst = bin(int(binascii.hexlify(s), 16))
n = int(bst, 2)
binascii.unhexlify('%x' % n)
Run Code Online (Sandbox Code Playgroud)
但是,最后我收到以下错误,这对我来说没有多大意义。
1 binascii.unhexlify('%x' %n)
类型错误:奇数字符串
这是什么问题,我该如何解决?
我正在使用base64模块用于b64decode()函数,但是某些文本字符串会抛出此错误:
'binascii.Error: Incorrect Padding'.
Run Code Online (Sandbox Code Playgroud)
我理解这是因为字符串不是4的长度倍数,这是base64编码文本的要求.
而不是仅仅将'='添加到字符串的末尾以使其成为4的倍数,我想捕获错误并简单地声明该字符串不是base64编码的.它使用一般的'except:',但是我想捕获特定的错误,但我找不到相同的错误,因为它不像其他错误那样具体,并且'除了binascii.Error: '显然是不确定的.救命?
我正在尝试生成一些 crc32 哈希值,但似乎zlib和binascii使用 crc32b 算法,即使它们各自的函数很简单zlib.crc32和binascii.crc32。我可以尝试其他用于哈希生成的 python 资源吗?有趣的是,我之前发现 R 的“digest”包也实现了 crc32b,但没有提到 crc32。
CRC32 和 CRC32b 含义的一些示例:
您可以在下拉列表中看到两者:http://www.md5calc.com/crc32
这里,CRC32b 位于右侧:https ://hash.online-convert.com/crc32-generator
这是一个以 php 为中心的讨论:What is the Difference Between crc32 and crc32b?
这里我们可以看到python正在实现CRC32b:如何用Python计算CRC32以匹配在线结果?
谢谢
我想使用 Redis 作为代理将字符串中的字节发送到 Celery 的任务,但我收到如下所示的错误:
[2017-06-17 21:27:13,826] ERROR in app: Exception on /endpoint_method [POST]
Traceback (most recent call last):
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/developer/my_project/application.py", line 23, in endpoint_method
task = my_task.execute.delay(request.data)
File "/Users/developer/my_project/venv/lib/python2.7/site-packages/celery/app/task.py", line 412, in delay
return self.apply_async(args, …Run Code Online (Sandbox Code Playgroud) 我在redis列表中用json.dumps()和RPUSH(ed)创建了一个JSON对象.当使用LRANGE(redis.lrange())返回JSON时,我收到一个二进制字符串
b'{"si":"00:ff" ...
Run Code Online (Sandbox Code Playgroud)
所以json.loads()引发了一个错误:***TypeError:JSON对象必须是str,而不是'bytes'我应该如何恢复为ascii?
我正在尝试hexlify从用户输入,但出现以下错误:
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)
如果我b在字符串之前使用它,那么它可以工作,但我如何使用输入来做到这一点?
这是代码:
import binascii as bs
text = input('Please Enter Your text:')
bs.hexlify(text)
Run Code Online (Sandbox Code Playgroud)
我试着做:
text = input('Please enter you text:')
import binascii as bs
bs.hexlify(bytes(text))
Run Code Online (Sandbox Code Playgroud)
但它给出了以下错误:
TypeError: string argument without an encoding
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我很难搞清楚为什么输出不一样.请注意,如果比较两者,差异非常小OUT.我想要实现的是在Python中使用与Ruby相同的输出.
红宝石:
IN:['034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed192'].pack('H*')
OUT:\x03AQ\xA3\xECF\xB5g\nh+\nc9O\x865\x87\xD1\xBC\x97H;\elp\xEBX\xE7\xF0\xAE\xD1\x92
蟒蛇:
IN:unhexlify('034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed192') OUT:\x03AQ\xa3\xecF\xb5g\nh+\nc9O\x865\x87\xd1\xbc\x97H;\x1blp\xebX\xe7\xf0\xae\xd1\x92
binascii ×7
python ×5
python-3.x ×2
redis ×2
base64 ×1
binary ×1
celery ×1
celery-task ×1
exception ×1
json ×1
pack ×1
python-2.7 ×1
ruby ×1
zlib ×1