У меня есть начальный гекс: "00000000FFFFFFFF000000000AF50AF5" на этом я хочу выполнить некоторые операции.
Пользователь вводит значение типа int (20 для примера).
Программа делает: ввод * 100. (= 2000)
Преобразуйте его в «Hex Little Endian» (= D0070000)
Замените первые 4 байта (00000000) новыми 4 байтами: (= D0070000FFFFFFFF000000000AF50AF5)
Пока здесь это хорошо! Проблемы начинаются сейчас.
Замените этот же гекс (= D0070000) в третьей позиции 4 байта (00000000): (= D0070000FFFFFFFFD00700000AF50AF5)
И, наконец, вычтите этот же гекс (= D0070000) во второе положение 4 байта (FFFFFFFF): (= 2FF8FFFF)
Конечный гекс: "D00700002FF8FFFFD00700000AF50AF5"
Я не понимаю, как я могу указать в моей программе положение 4 байта (1,2,3 или 4) для замены.
user_int_value=int(input("enter num: "))*100 #user input*100
start_hex=bytes.fromhex("00000000FFFFFFFF000000000AF50AF5") #Starting hex
num_tot=hex(int.from_bytes(user_int_value.to_bytes(16, 'little'), 'big')) #convert user input to hex in little endian
sum = hex(int('0xFFFFFFFF', 16) - int(num_tot, 16)) #substract same hex to "0xFFFFFFFF"
EDIT
Проще говоря, я хочу объединить 4 байта:
data = ["0xD0070000", "0x2FF8FFFF", "0xD0070000", "0x0AF50AF5"]
окончательный результат хочу "0xD00700002FF8FFFFD00700000AF50AF5"