1#!/usr/bin/env python3 2# 3# Parase and dump UUID128 in various formats 4 5import codecs 6import io 7import os 8import re 9import string 10import sys 11 12usage = ''' 13Usage: ./uuid128_formats.py UUID128 14''' 15 16def twoByteLEFor(value): 17 return [ (value & 0xff), (value >> 8)] 18 19def parseUUID128(uuid): 20 parts = re.match("([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})([0-9A-Fa-f]{4})", uuid) 21 uuid_bytes = [] 22 for i in range(8, 0, -1): 23 uuid_bytes = uuid_bytes + twoByteLEFor(int(parts.group(i),16)) 24 return uuid_bytes 25 26if (len(sys.argv) < 2): 27 print(usage) 28 sys.exit(1) 29 30uuid128 = sys.argv[1] 31uuid_bytes = parseUUID128(uuid128) 32print('UUID128: %s' % uuid128) 33print('little endian: %s' % ', '.join( [hex(i) for i in uuid_bytes] )) 34print('big endian: %s' % ', '.join( [hex(i) for i in reversed(uuid_bytes)] )) 35