function Serialize(num) local sign = num < 0 if sign then num = -num end local exp = floor(log(num)/log2) local mantissa = (num / 2^exp - 1) * 4503599627370496 local x = (exp + 1023) * 4503599627370496 + mantissa if sign then x = x + 9223372036854775808 end return char(x / 72057594037927936, mod(x / 281474976710656, 256), mod(x / 1099511627776, 256), mod(x / 4294967296, 256), mod(x / 16777216, 256), mod(x / 65536, 256), mod(x / 256, 256), mod(x, 256))endfunction Deserialize(code) local a = string.byte(code, 1) local b = string.byte(code, 2) local c = string.byte(code, 3) local d = string.byte(code, 4) local e = string.byte(code, 5) local f = string.byte(code, 6) local g = string.byte(code, 7) local h = string.byte(code, 8) local x = a * 72057594037927936 + b * 281474976710656 + c * 1099511627776 + d * 4294967296 + e * 16777216 + f * 65536 + g * 256 + h local mantissa = 1 + mod(x, 4503599627370496) / 4503599627370496 local exp = mod(floor(x / 4503599627370496), 2048) - 1023 local val = 2^exp * mantissa if floor(x / 9223372036854775808) == 1 return -val end return valend