nancode.py
import math
import struct
def nan_with_payload(p):
return struct.unpack("f", struct.pack("i", 0x7fc0_0000 | p))[0]
def nan_payload(n):
return struct.unpack("i", struct.pack("f", n))[0] & ~0x7fc0_0000
def nancode(s):
return [nan_with_payload(ord(c)) for c in s]
def nandecode(l):
return "".join(chr(nan_payload(i)) for i in l)
encoded = nancode("I 💩 IEEE-754")
assert all(math.isnan(x) for x in encoded)
print("The cyphertext is", encoded)
print("The plaintext is ", nandecode(encoded))