Python 实现16进制输入 高低位按bit 逆序后输出

verilog 实现比较简单,但运行环境每次都会比较麻烦,python 对bit 的操作没想到更好的方法 用了list 做的逆序


# -*- coding: utf-8 -*-

def bit_inverse(hex_d):
    bit_wide=18
    print("input hex data = 0x%x"%hex_d)    
    bit_d=bin(hex_d);
    str_bit_d=str(bit_d)
    print("input bin data = %s"%str_bit_d)
    str_bit_d_l=len(str_bit_d)
    print("input bin length = %d"%str_bit_d_l)
    
    add_len=bit_wide-str_bit_d_l+2
    print("add_len=%d"%add_len)
    bit_list=[]  #list
    #inv_bit_list=[]
    for i in range(0,bit_wide):
        if(i<add_len):
            print("%d add 1 bit_0"%i)
            bit_list.append(str(0))
        else:
            #print(str(i)+"="+str(str_bit_d[i-add_len+2]))
            bit_list.append(str_bit_d[i-add_len+2])
        #print("bit_list_"+str(i)+"="+str(bit_list[i]))
    print("bit_list_pre="+str(bit_list))
    bit_list.reverse();
    print("bit_list_rev="+str(bit_list))
    #for i in range(0,bit_wide):
    #    print("inv_"+str(i)+"="+str(bit_list[i]))
    inv_bit_d=''.join(bit_list)
    print(inv_bit_d)
    inv_bit_d='0b'+inv_bit_d
    print(inv_bit_d)
    inv_hex=hex(int(inv_bit_d,2))
    print(inv_hex)
    

    return


def main():
    
    hex_d=0x3a203   
    bit_inverse(hex_d)
    return 


if __name__ == '__main__':
    main()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值