Как выполнить xor строки?
Боюсь что универсального решения для любых типов данных достичь не получится хотя бы потому что внутреннее представление различных типов зависит от интерпретатора и платформы, и в общем случае непостоянно.
Но для str и int могу предложить такое решение:def xor_bytes(data):
    accumulator = 0
    for item in data:
        if isinstance(item, int):
            string = to_bytes(item)
        elif isinstance(item, str):
            string = item
        else:
            raise Exception('Invalid item type')
        for char in string:
            accumulator ^= (ord(char) & 0xff)
    return accumulator
И вспомогательная функция для python2, в котором int.to_bytes() не существует:def to_bytes(n, length=8, endianess='big'):
    h = '%x' % n
    s = ('0'*(len(h) % 2) + h).zfill(length*2).decode('hex')
    return s if endianess == 'big' else s[::-1]
Есть устройство, получающий пакет данных и выводящее переданный в пакете текст.
...
Контрольная сумма вычисляется как xor всех байтов с 4 по 7. На мой взгляд, проще всего сначала запаковать все ваши строки и числа в байты при помощи модуля struct (struct.pack), а затем уже xor-ить нужные байты.