def hex_bin(hex_data):
byte_li = []
for hex_str in range(0, len(hex_data), 2):
data = hex_data[hex_str:hex_str+2]
binary_str = bin(int(data, 16))[2:]
if len(binary_str) < 8:
binary_str = '0' * (8 - len(binary_str)) + binary_str
byte_li.append(binary_str[::-1])
return byte_li
def start_byte(bin_data, start_bit, length):
data = "".join(bin_data)
print(int(data[start_bit:start_bit+length][::-1], 2))
if __name__ == '__main__':
while True:
hex_data = input("请输入源字节数据:")
Start_Bit_Position = int(input("请输入起始位:"))
Signal_Length = int(input("请输入信号长度:"))
start_byte(hex_bin(hex_data), Start_Bit_Position, Signal_Length)
根据输入的8位原始CAN报文和信号起始bit位加信号长度计算出信号值