コード例 #1
0
 def test_explicit(self):
     data = [  #     little  big                  little  big
         ('', '', ''),
         ('0000', '0', '0'),
         ('0001', '8', '1'),
         ('1000', '1', '8'),
         ('1001', '9', '9'),
         ('0100', '2', '4'),
         ('0101', 'a', '5'),
         ('1100', '3', 'c'),
         ('1101', 'b', 'd'),
         ('0010', '4', '2'),
         ('0011', 'c', '3'),
         ('1010', '5', 'a'),
         ('1011', 'd', 'b'),
         ('0110', '6', '6'),
         ('0111', 'e', '7'),
         ('1110', '7', 'e'),
         ('1111', 'f', 'f'),
         ('10001100', '13', '8c'),
         ('100011001110', '137', '8ce'),
         ('1000110011101111', '137f', '8cef'),
         ('10100111110111001001', '5eb39', 'a7dc9'),
     ]
     for bs, hex_le, hex_be in data:
         a_be = bitarray(bs, 'big')
         a_le = bitarray(bs, 'little')
         self.assertEQUAL(hex2ba(hex_be, 'big'), a_be)
         self.assertEQUAL(hex2ba(hex_le, 'little'), a_le)
         self.assertEqual(ba2hex(a_be), hex_be)
         self.assertEqual(ba2hex(a_le), hex_le)
コード例 #2
0
ファイル: test_util.py プロジェクト: yx91490/impala-1
 def test_hex2ba(self):
     self.assertEqual(hex2ba(''), bitarray())
     for c in 'e', 'E', b'e', b'E':
         a = hex2ba(c)
         self.assertEqual(a.to01(), '1110')
         self.assertEqual(a.endian(), 'big')
     self.assertEQUAL(hex2ba('01'), bitarray('00000001', 'big'))
     self.assertRaises(Exception, hex2ba, '01a7x89')
     self.assertRaises(TypeError, hex2ba, 0)
コード例 #3
0
 def test_hex2ba(self):
     _set_default_endian('big')
     self.assertEqual(hex2ba(''), bitarray())
     for c in 'e', 'E', b'e', b'E', unicode('e'), unicode('E'):
         a = hex2ba(c)
         self.assertEqual(a.to01(), '1110')
         self.assertEqual(a.endian(), 'big')
     self.assertEQUAL(hex2ba('01'), bitarray('00000001', 'big'))
     self.assertEQUAL(hex2ba('08', 'little'),
                      bitarray('00000001', 'little'))
     self.assertRaises(Exception, hex2ba, '01a7x89')
     self.assertRaises(TypeError, hex2ba, 0)
コード例 #4
0
 def test_round_trip(self):
     s = ''.join(choice(hexdigits) for _ in range(randint(20, 100)))
     for default_endian in 'big', 'little':
         _set_default_endian(default_endian)
         a = hex2ba(s)
         self.check_obj(a)
         self.assertEqual(len(a) % 4, 0)
         self.assertEqual(a.endian(), default_endian)
         t = ba2hex(a)
         self.assertEqual(t, s.lower())
         b = hex2ba(t, default_endian)
         self.assertEQUAL(a, b)
コード例 #5
0
 def test_round_trip(self):
     for i in range(100):
         s = ''.join(choice(hexdigits) for _ in range(randint(0, 1000)))
         for default_endian in 'big', 'little':
             _set_default_endian(default_endian)
             a = hex2ba(s)
             self.assertEqual(len(a) % 4, 0)
             self.assertEqual(a.endian(), default_endian)
             t = ba2hex(a)
             self.assertEqual(t, s.lower())
             b = hex2ba(t, default_endian)
             self.assertEQUAL(a, b)
             # test simple encode / decode implementation
             self.assertEQUAL(a, self.hex2ba(t))
             self.assertEqual(t, self.ba2hex(a))
コード例 #6
0
 def test_binascii(self):
     a = urandom(800, 'big')
     s = binascii.hexlify(a.tobytes()).decode()
     self.assertEqual(ba2hex(a), s)
     b = bitarray(endian='big')
     b.frombytes(binascii.unhexlify(s))
     self.assertEQUAL(hex2ba(s, 'big'), b)
コード例 #7
0
 def test_explicit(self):
     data = [  #                       little   big
         ('', '', ''),
         ('1000', '1', '8'),
         ('1000 1100', '13', '8c'),
         ('1000 1100 1110', '137', '8ce'),
         ('1000 1100 1110 1111', '137f', '8cef'),
         ('1000 1100 1110 1111 0100', '137f2', '8cef4'),
     ]
     for bs, hex_le, hex_be in data:
         a_be = bitarray(bs, 'big')
         a_le = bitarray(bs, 'little')
         self.assertEQUAL(hex2ba(hex_be, 'big'), a_be)
         self.assertEQUAL(hex2ba(hex_le, 'little'), a_le)
         self.assertEqual(ba2hex(a_be), hex_be)
         self.assertEqual(ba2hex(a_le), hex_le)
コード例 #8
0
ファイル: test_util.py プロジェクト: yx91490/impala-1
 def test_round_trip2(self):
     for a in self.randombitarrays():
         if len(a) % 4 or a.endian() != 'big':
             self.assertRaises(ValueError, ba2hex, a)
             continue
         b = hex2ba(ba2hex(a))
         self.assertEQUAL(b, a)
コード例 #9
0
def parse_input_file(filename: str) -> bitarray:
    current_dir = os.path.dirname(__file__)
    full_file_path = os.path.join(current_dir, filename)
    parsed_input = None
    with open(full_file_path) as input_file:
        parsed_input = input_file.readline().strip()
    return util.hex2ba(parsed_input)
コード例 #10
0
 def test_explicit(self):
     for h, bs in [('', ''), ('0', '0000'), ('a', '1010'), ('f', '1111'),
                   ('1a', '00011010'), ('2b', '00101011'),
                   ('4c1', '010011000001'), ('a7d', '101001111101')]:
         a = bitarray(bs, 'big')
         self.assertEQUAL(hex2ba(h), a)
         self.assertEqual(ba2hex(a), h)
コード例 #11
0
 def test_hex(self):
     for i in range(1000):
         s = hex(i)
         self.assertEqual(s[:2], '0x')
         a = hex2ba(s[2:], 'big')
         self.assertEqual(ba2int(a), i)
         t = '0x%s' % ba2hex(a)
         self.assertEqual(t, s)
         self.assertEqual(eval(t), i)
コード例 #12
0
    def test_hexadecimal(self):
        a = base2ba(16, 'F61', 'big')
        self.assertEqual(a, bitarray('1111 0110 0001'))
        self.assertEqual(ba2base(16, a), 'f61')

        for n in range(50):
            s = ''.join(choice(hexdigits) for _ in range(n))
            for endian in 'big', 'little':
                a = base2ba(16, s, endian)
                self.assertEQUAL(a, hex2ba(s, endian))
                self.assertEqual(ba2base(16, a), ba2hex(a))
コード例 #13
0
 def test_hex2ba(self):
     _set_default_endian('big')
     self.assertEqual(hex2ba(''), bitarray())
     for c in 'e', 'E', b'e', b'E', u'e', u'E':
         a = hex2ba(c)
         self.assertEqual(a.to01(), '1110')
         self.assertEqual(a.endian(), 'big')
     self.assertEQUAL(hex2ba('01'), bitarray('0000 0001', 'big'))
     self.assertEQUAL(hex2ba('08', 'little'),
                      bitarray('0000 0001', 'little'))
     self.assertEQUAL(hex2ba('aD'), bitarray('1010 1101', 'big'))
     self.assertEQUAL(hex2ba(b'10aF'), bitarray('0001 0000 1010 1111',
                                                'big'))
     self.assertEQUAL(hex2ba(b'10aF', 'little'),
                      bitarray('1000 0000 0101 1111', 'little'))
コード例 #14
0
ファイル: test_util.py プロジェクト: yx91490/impala-1
 def test_round_trip(self):
     for i in range(100):
         s = ''.join(choice(hexdigits) for _ in range(randint(0, 1000)))
         t = ba2hex(hex2ba(s))
         self.assertEqual(t.decode(), s.lower())
コード例 #15
0
ファイル: day16.py プロジェクト: matslindh/codingchallenges
def program_decoder(hex_instruction):
    bits = hex2ba(hex_instruction)
    return instruction_decoder(bits)
コード例 #16
0
ファイル: answers.py プロジェクト: darendal/AdventOfCode
    def __init__(self, hex_str):
        bits = hex2ba(hex_str)

        self.packet = BitsMessage.Packet()
        self.packet.parse(bits, 0)