Splitting data and data conversion(Python)

#!/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)

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值