9
9
# http://arrayfire.com/licenses/BSD-3-Clause
10
10
########################################################
11
11
12
+
12
13
def reverse_char (b ):
13
14
b = (b & 0xF0 ) >> 4 | (b & 0x0F ) << 4
14
15
b = (b & 0xCC ) >> 2 | (b & 0x33 ) << 2
@@ -18,23 +19,23 @@ def reverse_char(b):
18
19
19
20
# http://stackoverflow.com/a/9144870/2192361
20
21
def reverse (x ):
21
- x = ((x >> 1 ) & 0x55555555 ) | ((x & 0x55555555 ) << 1 )
22
- x = ((x >> 2 ) & 0x33333333 ) | ((x & 0x33333333 ) << 2 )
23
- x = ((x >> 4 ) & 0x0f0f0f0f ) | ((x & 0x0f0f0f0f ) << 4 )
24
- x = ((x >> 8 ) & 0x00ff00ff ) | ((x & 0x00ff00ff ) << 8 )
25
- x = ((x >> 16 ) & 0xffff ) | ((x & 0xffff ) << 16 );
22
+ x = ((x >> 1 ) & 0x55555555 ) | ((x & 0x55555555 ) << 1 )
23
+ x = ((x >> 2 ) & 0x33333333 ) | ((x & 0x33333333 ) << 2 )
24
+ x = ((x >> 4 ) & 0x0F0F0F0F ) | ((x & 0x0F0F0F0F ) << 4 )
25
+ x = ((x >> 8 ) & 0x00FF00FF ) | ((x & 0x00FF00FF ) << 8 )
26
+ x = ((x >> 16 ) & 0xFFFF ) | ((x & 0xFFFF ) << 16 )
26
27
return x
27
28
28
29
29
30
def read_idx (name ):
30
- with open (name , 'rb' ) as f :
31
+ with open (name , "rb" ) as f :
31
32
# In the C++ version, bytes the size of 4 chars are being read
32
33
# May not work properly in machines where a char is not 1 byte
33
34
bytes_read = f .read (4 )
34
35
bytes_read = bytearray (bytes_read )
35
36
36
37
if bytes_read [2 ] != 8 :
37
- raise RuntimeError (' Unsupported data type' )
38
+ raise RuntimeError (" Unsupported data type" )
38
39
39
40
numdims = bytes_read [3 ]
40
41
elemsize = 1
@@ -48,11 +49,11 @@ def read_idx(name):
48
49
# Big endian to little endian
49
50
for j in range (4 ):
50
51
bytes_read [j ] = reverse_char (bytes_read [j ])
51
- bytes_read_int = int .from_bytes (bytes_read , ' little' )
52
+ bytes_read_int = int .from_bytes (bytes_read , " little" )
52
53
dim = reverse (bytes_read_int )
53
54
54
- elem = elem * dim ;
55
- dims [i ] = dim ;
55
+ elem = elem * dim
56
+ dims [i ] = dim
56
57
57
58
# Read the data
58
59
cdata = f .read (elem * elemsize )
@@ -61,13 +62,14 @@ def read_idx(name):
61
62
62
63
return (dims , data )
63
64
64
- if __name__ == '__main__' :
65
+
66
+ if __name__ == "__main__" :
65
67
# Example usage of reverse_char
66
- byte_value = 0b10101010
68
+ byte_value = 0b10101010
67
69
reversed_byte = reverse_char (byte_value )
68
70
print (f"Original byte: { byte_value :08b} , Reversed byte: { reversed_byte :08b} " )
69
71
70
72
# Example usage of reverse
71
- int_value = 0x12345678
73
+ int_value = 0x12345678
72
74
reversed_int = reverse (int_value )
73
- print (f"Original int: { int_value :032b} , Reversed int: { reversed_int :032b} " )
75
+ print (f"Original int: { int_value :032b} , Reversed int: { reversed_int :032b} " )
0 commit comments