class ConvertValue:
@staticmethod
def intToHEX(value, count=2):
"""
将十进制正整数转为十六进制字符串,默认转为2位
例: count=2时, 10 -> 0x0a
:param value: 十进制数
:param count: 需要显示的位数, 如:"0x11"是2位
:return: value < 0 : False, None
value >= 0 : True, hex字符串
"""
try:
if value < 0:
return False, None
valueHex = hex(value)
hexLength = len(valueHex)
# 位数缺少的用"0"补齐, 先加上默认的"0x"2位,先去掉
polishStr = "0" * (count + 3 - hexLength)
# 在"0x"后面插入补齐的字符
valueHex = valueHex[:2] + polishStr + valueHex[2:]
return True, valueHex
except Exception as err:
return False, err
@staticmethod
def intToBin(value, count=8):
"""
将十进制正整数转为二进制字符串,不含"0b"
例: count=8时, 10 -> 00001010
:param value: 十进制数
:param count: 需要显示的位数,如:"00001010"是8位
:return: value < 0 : False, None
value >= 0 : True, 二进制字符串
"""
try:
if value < 0:
return False, None
valueBinStr = bin(value).split("0b")[1]
binLength = len(valueBinStr)
polishStr = "0" * (count - binLength)
valueBinStr = polishStr + valueBinStr
return True, valueBinStr
except Exception as err:
return False, err
@staticmethod
def hexToInt(hexStr):
"""
将十六进制字符串转为十进制正整数
例: "0x11" -> 17
:param hexStr: 十六进制字符串
:return: 十进制正整数
"""
try:
intValue = int(hexStr, 16)
return True, intValue
except Exception as err:
return False, err
@staticmethod
def binToInt(binStr):
"""
将二进制字符串转为十进制正整数
例: "1111" -> 15
"0b1111" -> 15
b"1111" -> 15
:param binStr: 二进制字符串
:return: 十进制正整数
"""
try:
if "0x" in binStr:
binStr = binStr.replace("0x", "0b")
intValue = int(binStr, 2)
return True, intValue
except Exception as err:
return False, err
python的数据类型转换
于 2023-09-28 18:21:46 首次发布