我用Python编写了这部分代码:
for line in response.body.split("\n"):
if line != "":
opg = int(line.split(" ")[2])
opc = int(line.split(" ")[3])
value = line.split(" ")[5]
if command == 'IDENTIFY':
if opg==opcodegroupr and opc==opcoder:
print line
ret['success'] = "IDENTIFY: The value is %s " % (value)
self.write(tornado.escape.json_encode(ret))
self.finish()
Run Code Online (Sandbox Code Playgroud)
变量“line”是这样创建的:
1363005087 2459546910990453036 151 88 4 0x15000000
Run Code Online (Sandbox Code Playgroud)
每个字段都是整数,但最后一个字段不是。最后一个字段是一个十六进制数字。
我会采用这个十六进制数并在每个字节分割字节之后。例如,我希望 0x15000000 被分成 15 00 00 00。
我能怎么做?我尝试使用 value.encode("hex") 但不能正常工作...值是一个字符串?我不知道如何考虑这个变量..
如果十六进制值已经是文本,则无需再进行任何转换:
>>> text = "0x15000000"
>>> text = text[2:] # remove literal type prefix
>>> text = text.zfill(len(text) + len(text) % 2) # pad with zeros for even digits
>>> ' '.join(text[i: i+2] for i in range(0, len(text), 2)) # split into 2-digit chunks
'15 00 00 00'
Run Code Online (Sandbox Code Playgroud)
(根据@tobias-k关于零填充的建议进行编辑)