fork download
  1. # your code goes here
  2. """ base58 encoding / decoding functions """
  3. import unittest
  4.  
  5. alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
  6. base_count = len(alphabet)
  7.  
  8. def encode(num):
  9. """ Returns num in a base58-encoded string """
  10. encode = ''
  11.  
  12. if (num < 0):
  13. return ''
  14.  
  15. while (num >= base_count):
  16. mod = num % base_count
  17. encode = alphabet[mod] + encode
  18. num = num / base_count
  19.  
  20. if (num):
  21. encode = alphabet[num] + encode
  22.  
  23. return encode
  24.  
  25. def decode(s):
  26. """ Decodes the base58-encoded string s into an integer """
  27. decoded = 0
  28. multi = 1
  29. s = s[::-1]
  30. for char in s:
  31. decoded += multi * alphabet.index(char)
  32. multi = multi * base_count
  33.  
  34. return decoded
  35.  
  36. class Base58Tests(unittest.TestCase):
  37.  
  38. def test_alphabet_length(self):
  39. self.assertEqual(58, len(alphabet))
  40.  
  41. def test_encode_10002343_returns_Tgmc(self):
  42. result = encode(10002343)
  43. self.assertEqual('Tgmc', result)
  44.  
  45. def test_decode_Tgmc_returns_10002343(self):
  46. decoded = decode('Tgmc')
  47. self.assertEqual(10002343, decoded)
  48.  
  49. def test_encode_1000_returns_if(self):
  50. result = encode(1000)
  51. self.assertEqual('if', result)
  52.  
  53. def test_decode_if_returns_1000(self):
  54. decoded = decode('if')
  55. self.assertEqual(1000, decoded)
  56.  
  57. def test_encode_zero_returns_empty_string(self):
  58. self.assertEqual('', encode(0))
  59.  
  60. def test_encode_negative_number_returns_empty_string(self):
  61. self.assertEqual('', encode(-100))
  62.  
  63. if __name__ == '__main__':
  64. #print encode(int("00B94BA6C51B3D8372D82FDE5DC78773D960B5A82FCDAC8181",16))
  65. print hex(decode("Wh4bh"))
Success #stdin #stdout 0.03s 8044KB
stdin
35aca863-a674-3803-9b98-228864642098",18446744005159871776,"T"],["ac8f29f5-8e3e-3234-a3b8-5da7103a1b1a",18446744005122523136,"T"],["00000000-0000-0000-0000-000000000000",0,"A"],["1c67ea89-6c80-3ae8-acb4-088957678249",18446744005143965264,"T"],["d0250b1d-d8e3-335a-91a8-4dd41147130e",18446744005157420496,"T"],["cbc282e1-6b20-34ca-8fc7-87df41e16eef",18446744005157389616,"T"],["39c1b102-8748-3532-bb9f-32e2c62f3706",18446744005132814208,"T"],["69e78b4a-6673-3c59-9dd5-79a01fa700a3",18446744005132141616,"T"],["63bcce99-2955-3db0-aa71-bb33651ce3c0",18446744005141581616,"T"],["76a66de4-fa2f-347a-a8ba-234e0ea69604",18446744005140288880,"T"],["c7b128d5-8786-3a97-9942-b9e1e5327c10",18446744005157913968,"T"],["bea9964d-c325-3dc1-86f7-1465d9761d37",18446744005142294784,"T"],["35385611-fb21-34e2-bbf2-315d03493c43",18446744005150341376,"T"],["1ca1baff-3a37-3759-adad-e8d644586eda",18446744005137526400,"T"],["89c9606d-50e3-375d-a636-7de8892a3a1a",18446744005138183120,"T"],["c30ff694-2842-387b-90f8-765a8adf986d",18446744005143060608,"T"],["a42145b5-f303-399b-9124-fbd5d9ac2229",6442450944,"S"],["4cb7ccbe-3939-377c-9c36-08ec8d582151",4305190912,"P"],["26644f7f-d042-38c5-929d-0232c1a43eab",4306780160,"P"],["6d24c5c4-666a-3d85-9c2c-c74150028372",4324982784,"P"],["2285e029-5ba5-3b6d-8064-19e974b69c71",4367040512,"P"],["779af808-e7fa-38c0-848f-aea7b8f57925",4332519424,"P"],["df6a0bb6-7f7e-3d63-bb1b-c9cd80f0a24d",4334223360,"P"],["c1b8a64d-8d53-36cf-a1c0-f87351a5be7f",4334911488,"P"],["e746b5f5-f78d-3a25-bf51-5adcaab82382",4344774656,"P"],["1abad528-6868-368f-94d3-e6523b8fb77c",4364173312,"P"],
stdout
0x1406e058