
def int2byte(n):
	if n >= 2 ** 8:
		raise Exception('a byte can only contain a number smaller then %s' % (2 ** 8))

	bits = [0] * 8

	for i in range(8):
		j = 7 - i
		c = 2 ** j

		if c <= n:
			n -= c
			bits[i] = 1

	return bits


def byte2int(byte):
	result = 0
	for i in range(len(byte)):
		j = 7 - i
		c = 2 ** i

		result += c * byte[j]

	return result

def test(x):
	b = int2byte(x)
	print(x, '\t', b, '\t', byte2int(b))



def swapMSB2LSB(origin, target, numberOfBits):
	target[len(target) - numberOfBits:] = origin[0:numberOfBits]
	return target

def extractLSB(byte, numberOfBits):
	newByte = [0] * 8
	newByte[0:numberOfBits] = byte[len(byte) - numberOfBits:]
	return newByte

