#!/usr/bin/python
# Write Python 3 code in this online editor and run it.
def split_binary(data):
part1 = (data >> 16) & 0xFFFF
part2 = data & 0xFFFF
return (part1, part2)
def invert_bits(num):
return ~num
Idata = 0
Qdata = 0
int_num = "3170976514" # 输入需要转换的十六进制数字
binary_num = bin(int(int_num))[2:] # 转为整数,再通过bin()函数得到对应的二进制表示形式
print("二进制结果:", binary_num)
result = split_binary(int(binary_num,2))
print("分割后的结果Dec:", result[0],result[1])
iDataType = 0
if (result[1] & 0x8000) != 0:
print("I is a minus data")
iDataType = 1
qData2Type = 0
if (result[0] & 0x8000) != 0:
print("Q is a minus data")
qData2Type = 1
binary_num1 = bin(result[0] & 0xFFFC)[2:]
binary_num2 = bin(result[1] & 0xFFFC)[2:]
print("分割后的结果Bin:", binary_num1,binary_num2)
if iDataType == 0:
Idata = int(binary_num2,2)
# print(binary_num2)
print("I data:",Idata)
if qData2Type == 0:
Qdata = int(binary_num1,2)
print("Q data:",Qdata)
if qData2Type != 0:
binary_str = str(binary_num1) # 输入的二进制数字
# if len(binary_str) < 16:
# binary_str = ''.join(['0'] * (16 - len(binary_str))) + binary_str
result = bin(int(''.join(['1' if bit == '0' else '0' for bit in binary_str]), 2))[2:] # 对每个bit取反后转换成十进制再转换回二进制形式
Qdata = -(int(result,2)+1)
# print(bin(int(result,2)+1)[2:])
print("Q data:",Qdata) #原码 = 补码取反 + 1
if iDataType != 0:
binary_str = str(binary_num2) # 输入的二进制数字
# if len(binary_str) < 16:
# binary_str = ''.join(['0'] * (16 - len(binary_str))) + binary_str
result = bin(int(''.join(['1' if bit == '0' else '0' for bit in binary_str]), 2))[2:] # 对每个bit取反后转换成十进制再转换回二进制形式
Idata = -(int(result,2)+1)
print("I data:",Idata) #原码 = 补码取反 + 1
IdataQ15ToFloat = Idata*64/32768
QdataQ15ToFloat = Qdata*64/32768
print("IQ data:",IdataQ15ToFloat,QdataQ15ToFloat)
Splitting data and data conversion(Python)
最新推荐文章于 2024-07-24 23:49:50 发布