-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathenum_to_bytes.py
35 lines (28 loc) · 1.25 KB
/
enum_to_bytes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from Chess import *
import binascii
def list_to_bytes(values, offset=0):
bytes_hex = "".join('\\x%s' % format(n+offset, 'x').zfill(2) for n in values)
return values, bytes_hex
def enum_to_bytes(enum, offset=0):
"""
Convert enum values to a byte string.
Can optionally offset values to handle negative cases
"""
values = []
for e in enum:
values.append(e.value)
return list_to_bytes(values, offset)
print('Flags:\n%s\n%s' % enum_to_bytes(Flags))
print('Direction:\n%s\n%s' % enum_to_bytes(Direction, offset=64))
print('Piece:\n%s\n%s' % enum_to_bytes(Piece, offset=64))
knight_moves = [-33, -31, -18, -14, 14, 18, 31, 33];
print('Knight moves:\n%s\n%s' % list_to_bytes(knight_moves, offset=64))
default_board = [-4,-2,-3,-5,-6,-3,-2,-4,0,0,0,4,0,0,0,0,\
-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,\
4,2,3,5,6,3,2,4,0,0,0,116,0,0,0,0]
print('Default board:\n%s\n%s' % list_to_bytes(default_board, offset=8))