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))