十进制整数(含负数)转化为16进制字符串

十进制整数(含负数)转化为16进制字符串

最近想要将十进制的整数(含负数)转化为16进制的字符串发送到CAN网络,所以用python写了个调用函数。

大概思路:
如果是正数的话:
直接用hex()取其16进制,我这里想要标准的四位大小,所以根据数值大小添加字符串‘0‘或者‘00’

如果是负数的话:
负数的16进制是取其补码,这里采用的方式是用负整数与上0xffffffff,再取其16进制即:n3=(hex(n2 & 0xffffffff)),再取其后四位即可

如果是零的话:
很简单取其16进制再加上‘000’字符串即可。

代码如下

def ten_to_sixteen(n1):
    if n1<-30:
        n1=-30
    if n1>30:
        n1=30
    n2=n1*120      
    if n2>0 and n2<1200:
        n3=hex((n2))
        n4=n3[-2:]
        n4='00'+n4
        print(n4)
    if n2 >=1200:
        n3=(hex(n2))
        n4=n3[-3:]
        n4='0'+ n4
        print(n4)    
    if n2<0:
        n3=(hex(n2 & 0xffffffff))
        n4=n3[-4:]
        print(n4)
    if n2==0:
        n4=(hex(n2))
        n4=n4[-1]
        n4='000'+n4
        print(n4)
    return n4
if __name__ == '__main__':
    ten_to_sixteen(1)
    ten_to_sixteen(10)
    ten_to_sixteen(-3)
    ten_to_sixteen(-28)

运行结果如下:

0078
04b0
fe98
f2e0
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页