|
Packit Service |
b1ea74 |
#!/usr/bin/python
|
|
Packit Service |
b1ea74 |
#
|
|
Packit Service |
b1ea74 |
# A script to convert blob from the MS spec to array of byte to use in unitary tests
|
|
Packit Service |
b1ea74 |
#
|
|
Packit Service |
b1ea74 |
# 00000000 c7 01 00 01 20 54 e2
|
|
Packit Service |
b1ea74 |
# 00000008 c7 01 00 01 20 54 e2
|
|
Packit Service |
b1ea74 |
# taken from the spec, will give:
|
|
Packit Service |
b1ea74 |
# 0xc7, 0x01, 0x00, 0x01, 0x20, 0x54, 0xe2,
|
|
Packit Service |
b1ea74 |
# 0xc7, 0x01, 0x00, 0x01, 0x20, 0x54, 0xe2,
|
|
Packit Service |
b1ea74 |
#
|
|
Packit Service |
b1ea74 |
# Notes:
|
|
Packit Service |
b1ea74 |
# * the script reads the two first lines to detect the number of items per lines, so you need a blob with at least 2 lines
|
|
Packit Service |
b1ea74 |
# * the script detects if items are hex values by searching for + or -
|
|
Packit Service |
b1ea74 |
#
|
|
Packit Service |
b1ea74 |
# sample usage:
|
|
Packit Service |
b1ea74 |
# $ python scripts/specBytesToCode.py < image.txt > image.c
|
|
Packit Service |
b1ea74 |
# then go edit image.c and paste that in your code
|
|
Packit Service |
b1ea74 |
import sys
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
def getOffset(l):
|
|
Packit Service |
b1ea74 |
token = l.split(' ')[0]
|
|
Packit Service |
b1ea74 |
return int(token, 16)
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
def isHex(l):
|
|
Packit Service |
b1ea74 |
return l.find('+') == -1 and l.find('-') == -1
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
if __name__ == '__main__':
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
lines = []
|
|
Packit Service |
b1ea74 |
itemPerLine = 16
|
|
Packit Service |
b1ea74 |
doHex = True
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
# parse the offset to know how many items per line we have
|
|
Packit Service |
b1ea74 |
l1 = sys.stdin.readline().strip()
|
|
Packit Service |
b1ea74 |
l2 = sys.stdin.readline().strip()
|
|
Packit Service |
b1ea74 |
itemsPerLine = getOffset(l2) - getOffset(l1)
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
#
|
|
Packit Service |
b1ea74 |
doHex = isHex(l1)
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
for l in [l1, l2] + sys.stdin.readlines():
|
|
Packit Service |
b1ea74 |
# 00000000 c7 01 00 01 20 54 e2 cc 00 jh.kjkjhkhk
|
|
Packit Service |
b1ea74 |
l = l.strip() # in case we have spaces before the offset
|
|
Packit Service |
b1ea74 |
pos = l.find(' ')
|
|
Packit Service |
b1ea74 |
l = l[pos+1:]
|
|
Packit Service |
b1ea74 |
items = []
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
tokens = l.strip().split(' ')
|
|
Packit Service |
b1ea74 |
ntokens = 0
|
|
Packit Service |
b1ea74 |
for t in tokens:
|
|
Packit Service |
b1ea74 |
if not t: # empty token
|
|
Packit Service |
b1ea74 |
continue
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
if ntokens == itemPerLine:
|
|
Packit Service |
b1ea74 |
break
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
item = ''
|
|
Packit Service |
b1ea74 |
if doHex:
|
|
Packit Service |
b1ea74 |
item += '0x'
|
|
Packit Service |
b1ea74 |
item += t
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
items.append(item)
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
ntokens += 1
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
lines.append(', '.join(items))
|
|
Packit Service |
b1ea74 |
|
|
Packit Service |
b1ea74 |
print(",\n".join(lines))
|