xref: /btstack/tool/uuid128_formats.py (revision 5c54401929043df982e040eba652f5fd7763ce15)
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