A T3Number is a crossing between an integer and a string. A T3Number supports arithmetic operations like addition and multiplication, bitwise operations such as inversions and shifts but it has also a length, is iterable and allows concatenations.
T3Numbers were designed to represent hexadecimal strings with an arbitrary number of leading zeros. Additionally convenient arithmetics operations should be performed on them wit
Conversion  Type 

int(x)  int 
x.number()  int ( same as int(x) ) 
x.digits()  str 
x.bytes()  array(‘b’, ...) 
The operators used on T3Numbers
Operation  Result  Notes 

x + y  sum of x and y  
x  y  difference of x and y  
x * y  product of x and y  
x / y  quotient of x and y  
x // y  concatenation of x and y  (1) 
x  x negated  
~x  x bitwise inverted  
x  y  bitwise or of x and y  
x ^ y  bitwise xor of x and y  
x & y  bitwise and of x and y  
x << n  x shifted left by n bits  
x >> n  x shifted right by n bits  (2) 
len(x)  length of x as the number of digits in the given radix  (4) 
int(x)  x converted to integer 
Parameters: 


The base value value must be in {2..16}.
The obj parameter should have one of the following types:
 int
 long
 str
 unicode
 array
 T3Number
 T3Value
Values of the listed types will be treated as follows:
Arbitrary int or long values are allowed.
Hexadecimal characters i.e. chars in the set {‘0’..‘9’ ‘a’..’f’ ‘A’..’F’} will be identified as numeral characters. All other characters will be ignored.
A numerical character c must fit the base i.e. the following inequality holds
c < base
Otherwise a ValueError is raised.
array objects with type code ‘b’ and ‘H’ are allowed.
base conversion