以字节为单位的日期时间
Datetime in bytes
我正在尝试从字节形式解码日期时间。我尝试了各种方法(秒、分钟、小时形式 1-1-1970、分钟形式 1-1-1 等)。我也试过 mysql 编码 (https://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html) 也没有效果。
请帮我找到日期时间保存密钥。
bf aa b8 c3 e5 2f
d7 be ba c3 e5 2f
80 a0 c0 c3 e5 2f
a7 fc bf c3 e5 2f
ae fd f2 c3 e5 2f
9e dd fa c3 e5 2f
c7 ce fa c3 e5 2f
b9 f5 82 c4 e5 2f
f8 95 f2 c3 e5 2f
一切都在 2022 年 1 月 14 日左右 12:00
每个值都是编码到 VARINT 中的时间戳。很久以前,我已经为 decode/encode VARINT:
创建了下一个函数
def to_varint(src):
buf = b""
while True:
towrite = src & 0x7f
src >>= 7
if src:
buf += bytes((towrite | 0x80,))
else:
buf += bytes((towrite,))
break
return buf
def from_varint(src):
shift = 0
result = 0
for i in src:
result |= (i & 0x7f) << shift
shift += 7
return result
所以使用这个函数我们可以解码你的值:
from datetime import datetime
...
values = """\
bf aa b8 c3 e5 2f
d7 be ba c3 e5 2f
80 a0 c0 c3 e5 2f
a7 fc bf c3 e5 2f
ae fd f2 c3 e5 2f
9e dd fa c3 e5 2f
c7 ce fa c3 e5 2f
b9 f5 82 c4 e5 2f
f8 95 f2 c3 e5 2f"""
for value in values.splitlines():
timestamp = from_varint(bytes.fromhex(value))
dt = datetime.fromtimestamp(timestamp / 1000)
print(dt)
要获取此编码的当前时间戳,您可以使用下一个代码:
current = to_varint(int(datetime.now().timestamp() * 1000)).hex(" ")
我正在尝试从字节形式解码日期时间。我尝试了各种方法(秒、分钟、小时形式 1-1-1970、分钟形式 1-1-1 等)。我也试过 mysql 编码 (https://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html) 也没有效果。 请帮我找到日期时间保存密钥。
bf aa b8 c3 e5 2f
d7 be ba c3 e5 2f
80 a0 c0 c3 e5 2f
a7 fc bf c3 e5 2f
ae fd f2 c3 e5 2f
9e dd fa c3 e5 2f
c7 ce fa c3 e5 2f
b9 f5 82 c4 e5 2f
f8 95 f2 c3 e5 2f
一切都在 2022 年 1 月 14 日左右 12:00
每个值都是编码到 VARINT 中的时间戳。很久以前,我已经为 decode/encode VARINT:
创建了下一个函数def to_varint(src):
buf = b""
while True:
towrite = src & 0x7f
src >>= 7
if src:
buf += bytes((towrite | 0x80,))
else:
buf += bytes((towrite,))
break
return buf
def from_varint(src):
shift = 0
result = 0
for i in src:
result |= (i & 0x7f) << shift
shift += 7
return result
所以使用这个函数我们可以解码你的值:
from datetime import datetime
...
values = """\
bf aa b8 c3 e5 2f
d7 be ba c3 e5 2f
80 a0 c0 c3 e5 2f
a7 fc bf c3 e5 2f
ae fd f2 c3 e5 2f
9e dd fa c3 e5 2f
c7 ce fa c3 e5 2f
b9 f5 82 c4 e5 2f
f8 95 f2 c3 e5 2f"""
for value in values.splitlines():
timestamp = from_varint(bytes.fromhex(value))
dt = datetime.fromtimestamp(timestamp / 1000)
print(dt)
要获取此编码的当前时间戳,您可以使用下一个代码:
current = to_varint(int(datetime.now().timestamp() * 1000)).hex(" ")