Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
19-liner: flat solution in Clear category for Bit Message by przemyslaw.daniel
def checkio(data):
from datetime import datetime
msg_type = int(data[1:2], 16) >> 2
year, month, day, hour, minute, second = \
[int(data[x:x + 2][::-1]) for x in range(2, 14, 2)]
year, size = year+1900+100*(year < 70), [7, 8, 16][msg_type]
tz = int(str(int(data[15], 16) % 8)+data[14])*15//60
timezone = '+-'[(int(data[15], 16)//8 == 1)*(tz != 0)]+str(tz)
length = int(data[16:18], 16)
dt = datetime(year, month, day, hour, minute, second)
timestamp = dt.strftime("%d %b %Y %H:%M:%S GMT ")+timezone
data = [y+x for x, y in zip(data[18:][1::2], data[18:][::2])]
data = bin(int(''.join(data[::-1]), 16))[2:]
data = '0'*(-len(data) % size)+data
msg = [chr(int(data[x*size:size*(x+1)], 2)) for x in range(length)]
if size == 16:
msg = [data[x*size:size*(x+1)] for x in range(length)]
msg = [chr(int(x[8:]+x[:8], 2)) for x in msg]
return timestamp, length, ''.join(msg[::-1])
Nov. 22, 2017