我遇到以下输出,我无法理解它。 你能告诉它究竟是什么吗?如何打开包装?
'@\x01\x01\x00'
它看起来不是纯粹的二进制或十六进制。 我想看看它的ASCII表示。
答案 0 :(得分:2)
你有一个字节串,如果你打印它,你会看到ascii输出:
where to_date('02/06/2016','dd/mm/yyyy') <= nvl(l.effdate, to_date('12/31/9998','dd/mm/yyyy'))
or to_date('02/06/2016','dd/mm/yyyy') <= nvl(l.expdate, sysdate)
如果您在每个整数上调用In [5]: s = '@\x01\x01\x00'
In [8]: print(list(bytearray(s)))
[64, 1, 1, 0]
,您会看到完全相同的输出,ascii中的64为chr
,@
是 SOH , 1
是 NUL ,没有更多信息,例如它来自哪里,没有其他可以建议的内容。
答案 1 :(得分:1)
这似乎是一个四个字节的序列,其值为64,1,1,0。
要解释它,您需要知道它是如何编码的或它应该代表什么。
通常,您可以使用-- select with expdate < today or with no expdate
select *
from RATE_BILL l
where l.expdate is null or
l.expdate <= trunc(sysdate)
模块中的unpack
函数在Python中解压缩二进制数据:
struct
第一个import struct
intval = struct.unpack('i', '@\x01\x01\x00')
shortvals = struct.unpack('hh', '@\x01\x01\x00')
行将为您提供解释为4字节整数的字符串的值,即65856.第二行将字符串解释为两个2字节整数(320和1)