python: function and HexBinDecOct ,Convert binary, octal, decimal, and hexadecimal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | # encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2024/6/22 20:01 # User : geovindu # Product : PyCharm # Project : pyBaiduAi # File : BinaryConvert.py # explain : 学习 import sys import os import io class BinaryConvert( object ): """ 进制转换 """ def __init__( self ): """ 实例化 """ self .numstr = '' @staticmethod def hexFoo(k: int ) - > str : """ 整数十六進制 :param k: :return: """ # hexStr=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'] hexStr = '0123456789ABCDEF' return hexStr[k] @staticmethod def hexFoo2(k: int ) - > str : """ 整数转十六進制 :param k: 整数 :return: """ fstr = '' if k = = 10 : fstr = "A" elif k = = 11 : fstr = "B" elif k = = 12 : fstr = "C" elif k = = 13 : fstr = "D" elif k = = 14 : fstr = "E" elif k = = 15 : fstr = "F" else : fstr = str (k) return fstr @staticmethod def DecimalConvert(numstr: str ) - > int : """ 二进制字符串转十进制 字符串未倒过来 Octal Decimal Binary hexadecimal; sexadecimal :param numstr: 二进制字符 倒过来计算。从0开始索引 :return:整数 """ getstr = "" lenght = len (numstr) ssum = 0 if lenght> 0 : if BinaryConvert.isBinary(numstr): index = 0 for k in range (lenght - 1 , - 1 , - 1 ): if numstr[k] = = '1' : ssum = ssum + 1 * 2 * * index if numstr[k] = = '0' : ssum = ssum + 0 index + = 1 return ssum @staticmethod def OctalConvert(numstr: str ) - > str : """ 二进制字符串转八进制 字符串未倒过来 :param numstr:二进制字符 :return: """ length = len (numstr) eight = "" if length> 0 : cc = 0 if BinaryConvert.isBinary(numstr): for k in range (length, - 1 , - 3 ): if k > = 3 : #print(k, DecimalCovert(numstr[k - 3:k])) eight = eight + str (BinaryConvert.DecimalConvert(numstr[k - 3 :k])) if 0 <k < 3 : #print(DecimalCovert(numstr[:k])) eight = eight + str (BinaryConvert.DecimalConvert(numstr[:k])) cc + = 1 return eight[:: - 1 ] @staticmethod def HexadecimalConvert(numstr: str ) - > str : """ 二进制字符串转十六进制 字符串未倒过来 :param numstr:进制字符串 :return: """ sixtee = "" length = len (numstr) cc = 0 if length> 0 : if BinaryConvert.isBinary(numstr): for k in range (length, - 1 , - 4 ): # 1 次处理一位 # print(k, sixteenFoo(threeCovert(numstr[k - 4:k]))) if k > = 4 : sixtee = sixtee + BinaryConvert.hexFoo(BinaryConvert.DecimalConvert(numstr[k - 4 :k])) if 0 <k < 4 : #print(hexFoo(DecimalConvert(numstr[:k]))) sixtee = sixtee + BinaryConvert.hexFoo(BinaryConvert.DecimalConvert(numstr[:k])) cc + = 1 return sixtee[:: - 1 ] @staticmethod def ReversedConvert(numstr: str ) - > int : """ 二进制字符串转十进制 字符串倒过来 :param numstr: 二进制字符 :return: 整数 """ lenght = len (numstr) ssum = 0 if lenght > 0 : if BinaryConvert.isBinary(numstr): for k in range ( 0 ,lenght): if numstr[k] = = '1' : ssum = ssum + 1 * 2 * * k if numstr[k] = = '0' : ssum = ssum + 0 return ssum @staticmethod def isBinary(numstr: str ) - > bool : """ 判断是否二进制字符串,必须包含为1或0 :param numstr:二进制字符串 :return: 是否为真 """ length = len (numstr) isok = False if length > 0 : for k in range ( 0 , len (numstr)): if numstr[k] = = '0' or numstr[k] = = '1' : isok = True else : isok = False break return isok @staticmethod def SixConvertTen(hexadecimalstr: str ) - > int : """ 十六制转十进制 :param hexadecimalstr: 十六进制字符串 :return: 返回整数 """ table = { '0' : 0 , '1' : 1 , '2' : 2 , '3' : 3 , '4' : 4 , '5' : 5 , '6' : 6 , '7' : 7 , '8' : 8 , '9' : 9 , 'A' : 10 , 'B' : 11 , 'C' : 12 , 'D' : 13 , 'E' : 14 , 'F' : 15 } #hexadecimal = '3B' # input("Enter Hexadecimal Number: ").strip().upper() reInt = 0 # computing max power value size = len (hexadecimalstr) - 1 if size> 0 : for num in hexadecimalstr: reInt = reInt + table[num] * 16 * * size size = size - 1 print ( "十六进制转十进制" , reInt) return reInt @staticmethod def hexadecimalConvertTen(hexadecimalstr: str ) - > int : """ 十六制转十进制 :param hexadecimalstr: 十六进制字符串 :return: """ #hex = '3B' # input("Enter Hexadecimal Number: ") c = count = i = 0 lenght = len (hexadecimalstr) - 1 while lenght > = 0 : if hexadecimalstr[lenght] > = '0' and hexadecimalstr[lenght] < = '9' : rem = int (hexadecimalstr[lenght]) elif hexadecimalstr[lenght] > = 'A' and hexadecimalstr[lenght] < = 'F' : rem = ord (hexadecimalstr[lenght]) - 55 elif hexadecimalstr[lenght] > = 'a' and hexadecimalstr[lenght] < = 'f' : rem = ord (hexadecimalstr[lenght]) - 87 else : c = 1 break count = count + (rem * ( 16 * * i)) lenght = lenght - 1 i = i + 1 return count @staticmethod def hexadecimalConvertBin(hexadecimalstr: str ) - > str : """ 十六制转二进制 :param hexadecimalstr: :return: """ hexDict = { '0' : '0000' , '1' : '0001' , '2' : '0010' , '3' : '0011' , '4' : '0100' , '5' : '0101' , '6' : '0110' , '7' : '0111' , '8' : '1000' , '9' : '1001' , 'a' : '1010' , 'b' : '1011' , 'c' : '1100' , 'd' : '1101' , 'e' : '1110' , 'f' : '1111' } binary = '' if len (hexadecimalstr)> 0 : hexadecimalstr = hexadecimalstr.lower() # '3b' for digit in hexadecimalstr: binary + = hexDict[digit] print (binary) return binary @staticmethod def DecimalConvertBin(numint: int ) - > str : """ 十进制转二进制字符串 :param numint: :return: """ #numint = 59 numstr = [] binstring = '' while numint > 0 : # 余数进栈 renum = numint % 2 numstr.append(renum ) numint = numint / / 2 while len (numstr) > 0 : # 元素全部出栈即为所求二进制数 binstring = binstring + str (numstr.pop()) return binstring @staticmethod def DecimalConvertOct(numint: int ) - > str : """ 十进制转八进制 :param numint: :return: """ #numint = 59 numstr = [] octtring = '' while numint > 0 : # 余数进栈 renum = numint % 8 numstr.append(renum ) numint = numint / / 8 while len (numstr) > 0 : # 元素全部出栈即为所求八进制数 octtring = octtring + str (numstr.pop()) return octtring @staticmethod def DecimalConvertHex(numint: int ) - > str : """ 十进制转十六进制 :param numint: :return: """ #numint = 59 numstr = [] hexstring = '' while numint > 0 : # 余数进栈 renum = numint % 16 numstr.append(BinaryConvert.hexFoo(renum)) numint = numint / / 16 while len (numstr) > 0 : # 元素全部出栈即为所求十六进制数 hexstring = hexstring + str (numstr.pop()) return hexstring |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | def hexFoo(k): """ 十六進制 :param k: :return: """ fstr = '' if k = = 10 : fstr = "A" elif k = = 11 : fstr = "B" elif k = = 12 : fstr = "C" elif k = = 13 : fstr = "D" elif k = = 14 : fstr = "E" elif k = = 15 : fstr = "F" else : fstr = str (k) return fstr def DecimalConvert(numstr) - > int : """ 十进制 字符串未倒过来 Octal Decimal Binary hexadecimal; sexadecimal :param numstr: 二进制字符 倒过来计算。从0开始索引 :return:整数 """ getstr = "" lenght = len (numstr) ssum = 0 if (lenght> 0 ): if isBinary(numstr): index = 0 for k in range (lenght - 1 , - 1 , - 1 ): if (numstr[k] = = '1' ): ssum = ssum + 1 * 2 * * index if (numstr[k] = = '0' ): ssum = ssum + 0 index + = 1 return ssum def OctalConvert(numstr: str ) - > str : """ 八进制 字符串未倒过来 :param numstr:二进制字符 :return: """ length = len (numstr) eight = "" if (length> 0 ): cc = 0 if isBinary(numstr): for k in range (length, - 1 , - 3 ): if (k > = 3 ): #print(k, DecimalCovert(numstr[k - 3:k])) eight = eight + str (DecimalConvert(numstr[k - 3 :k])) if ( 0 <k < 3 ): #print(DecimalCovert(numstr[:k])) eight = eight + str (DecimalConvert(numstr[:k])) cc + = 1 return eight[:: - 1 ] def HexadecimalConvert(numstr: str ) - > str : """ 十六进制 字符串未倒过来 :param numstr: :return: """ sixtee = "" length = len (numstr) cc = 0 if (length> 0 ): if isBinary(numstr): for k in range (length, - 1 , - 4 ): # 1 次处理一位 # print(k, sixteenFoo(threeCovert(numstr[k - 4:k]))) if (k > = 4 ): sixtee = sixtee + hexFoo(DecimalConvert(numstr[k - 4 :k])) if ( 0 <k < 4 ): #print(hexFoo(DecimalConvert(numstr[:k]))) sixtee = sixtee + hexFoo(DecimalConvert(numstr[:k])) cc + = 1 return sixtee[:: - 1 ] def isBinary(numstr: str ) - > bool : """ 判断是否二进制字符串,必须包含为1或0 :param numstr: :return: """ length = len (numstr) isok = False if (length> 0 ): for k in range ( 0 , len (numstr)): if (numstr[k] = = '0' or numstr[k] = = '1' ): isok = True else : isok = False break return isok def ReversedConvert(numstr: str ) - > int : """ 十进制 字符串倒过来 :param numstr: 二进制字符 :return: 整数 """ lenght = len (numstr) ssum = 0 if (lenght > 0 ): for k in range ( 0 ,lenght): if (numstr[k] = = '1' ): ssum = ssum + 1 * 2 * * k if (numstr[k] = = '0' ): ssum = ssum + 0 return ssum # Press the green button in the gutter to run the script. if __name__ = = '__main__' : #print_hi('PyCharm,python language') numstr = '111011' isok = False for k in range ( 0 , len (numstr)): if (numstr[k] = = '0' or numstr[k] = = '1' ): isok = True else : isok = False break print (isok) print (isBinary(numstr)) print (OctalConvert(numstr)) print (HexadecimalConvert(numstr)) print (DecimalConvert(numstr)) length = len (numstr) print (length, length / / 3 , length % 3 ) print (length, length / / 4 , length % 4 ) print ( '************' ) eight = "" for k in range (length, - 1 , - 3 ): if (k > = 3 ): eight = eight + str (DecimalConvert(numstr[k - 3 :k])) if ( 0 <k < 3 ): eight = eight + str (DecimalConvert(numstr[:k])) print (eight[:: - 1 ]) print ( '************' ) sixtee = "" cc = 0 for k in range (length, - 1 , - 4 ): # 1 次处理一位 if (k > = 4 ): sixtee = sixtee + hexFoo(DecimalConvert(numstr[k - 4 :k])) if ( 0 <k < 4 ): sixtee = sixtee + hexFoo(DecimalConvert(numstr[:k])) cc + = 1 print (sixtee[:: - 1 ], cc) print ( '************' ) num = 0b111011 print (num) num = '111011' print (DecimalConvert(num)) print (OctalConvert(num)) num = num[:: - 1 ] sm = ReversedConvert(num) print (sm) print (num) num = ''.join( reversed (num)) print (num) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #十进制转二进制,八进制,十六进制 numint = 59 numstr = [] binstring = '' while numint > 0 : # 余数进栈 rem = numint % 2 numstr.append(rem) numint = numint / / 2 while len (numstr) > 0 : # 元素全部出栈即为所求二进制数 binstring = binstring + str (numstr.pop()) print ( "二进制:" + binstring) print ( '************' ) numint = 59 numstr = [] octtring = '' while numint > 0 : # 余数进栈 rem = numint % 8 numstr.append(rem) numint = numint / / 8 while len (numstr) > 0 : # 元素全部出栈即为所求八进制数 octtring = octtring + str (numstr.pop()) print ( "八进制:" + octtring) print ( '************' ) numint = 59 numstr = [] hexstring = '' while numint > 0 : # 余数进栈 rem = numint % 16 numstr.append(hexFoo(rem)) numint = numint / / 16 while len (numstr) > 0 : # 元素全部出栈即为所求十六进制数 hexstring = hexstring + str (numstr.pop()) print ( "十六进制:" + hexstring) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #十六进制转十进制 table = { '0' : 0 , '1' : 1 , '2' : 2 , '3' : 3 , '4' : 4 , '5' : 5 , '6' : 6 , '7' : 7 , '8' : 8 , '9' : 9 , 'A' : 10 , 'B' : 11 , 'C' : 12 , 'D' : 13 , 'E' : 14 , 'F' : 15 } hexadecimal = '3B' # input("Enter Hexadecimal Number: ").strip().upper() res = 0 # computing max power value size = len (hexadecimal) - 1 for num in hexadecimal: res = res + table[num] * 16 * * size size = size - 1 print ( "十六进制转十进制" ,res) hex = '3B' #input("Enter Hexadecimal Number: ") c = count = i = 0 lenght = len ( hex ) - 1 while lenght > = 0 : if hex [lenght] > = '0' and hex [lenght] < = '9' : rem = int ( hex [lenght]) elif hex [lenght] > = 'A' and hex [lenght] < = 'F' : rem = ord ( hex [lenght]) - 55 elif hex [lenght] > = 'a' and hex [lenght] < = 'f' : rem = ord ( hex [lenght]) - 87 else : c = 1 break count = count + (rem * ( 16 * * i)) lenght = lenght - 1 i = i + 1 rem = None print ( "十六进制转十进制" ,count) print ( '************' ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | def sixteenFoo(k): """ 十六進制 :param k: :return: """ fstr = '' if k = = 10 : fstr = "A" elif k = = 11 : fstr = "B" elif k = = 12 : fstr = "C" elif k = = 13 : fstr = "D" elif k = = 14 : fstr = "E" elif k = = 15 : fstr = "F" else : fstr = str (k) return fstr def threeCovert(numstr) - > int : """ :param numstr: :return: """ lenght = len (numstr) ssum = 0 if (lenght > 0 ): index = 0 for k in range (lenght - 1 , - 1 , - 1 ): if (numstr[k] = = '1' ): ssum = ssum + 1 * 2 * * index if (numstr[k] = = '0' ): ssum = ssum + 0 index + = 1 return ssum def tenCovert(numstr) - > int : """ 十进制 :param numstr: 二进制字符 :return:整数 """ getstr = "" lenght = len (numstr) ssum = 0 if (lenght> 0 ): index = 0 for k in range (lenght - 1 , - 1 , - 1 ): if (numstr[k] = = '1' ): ssum = ssum + 1 * 2 * * index if (numstr[k] = = '0' ): ssum = ssum + 0 index + = 1 return ssum def sixCovert(numstr: str ): """ :param numstr: 二进制字符 :return: """ getstr = "" lenght = len (numstr) if (lenght> 0 ): cshu = 0 for k in range ( 0 ,lenght, 4 ): cshu + = 1 return getstr def print_hi(name): # Use a breakpoint in the code line below to debug your script. print (f 'Hi, {name}' ) # Press Ctrl+F8 to toggle the breakpoint. # Press the green button in the gutter to run the script. if __name__ = = '__main__' : print_hi( 'PyCharm' ) numstr = f '1001110' print (tenCovert(numstr)) length = len (numstr) print (length,length / / 3 ,length % 3 ) print (length,length / / 4 , length % 4 ) print ( '************' ) eight = "" for k in range (length, - 1 , - 3 ): if (k> = 3 ): print (k,threeCovert(numstr[k - 3 :k])) eight = eight + str (threeCovert(numstr[k - 3 :k])) if (k< 3 ): print (threeCovert(numstr[:k])) eight = eight + str (threeCovert(numstr[:k])) print (eight) print ( '************' ) sixtee = "" cc = 0 for k in range (length, - 1 , - 4 ): # 1 次处理一位 #print(k, sixteenFoo(threeCovert(numstr[k - 4:k]))) if (k> = 4 ): sixtee = sixtee + sixteenFoo(threeCovert(numstr[k - 4 :k])) if (k < 4 ): print (sixteenFoo(threeCovert(numstr[:k]))) sixtee = sixtee + sixteenFoo(threeCovert(numstr[:k])) cc + = 1 print (sixtee,cc) print ( '************' ) print (sixteenFoo( 4 )) name = input ( "please name:" ) b = f "你好{name},歡迎光臨!" print (b) b = "你好%s,歡迎光臨!" % name print (b) b = "你好" + name + ",歡迎光臨!" print (b) b = "你好{0}" . format (name) + "歡迎光臨!" print (b) f = 0b1001110 # 十进制 int() a = 0 * 2 * * 0 + 1 * 2 * * 1 + 1 * 2 * * 2 + 1 * 2 * * 3 + 0 * 2 * * 4 + 0 * 2 * * 5 + 1 * 2 * * 6 print (a) # 八进制 oct() print ( 78 / 8 , 78 % 8 ) # 110 001 001 8 116 print ( 1 * 2 * * 0 + 0 * 2 * * 1 + 0 * 2 * * 2 , 1 * 2 * * 0 + 0 * 2 * * 1 + 0 * 2 * * 2 , 0 * 2 * * 0 + 1 * 2 * * 1 + 1 * 2 * * 2 ) #十六进制 hex() #0 100 1110 16 4E print (sixteenFoo( 0 * 2 * * 0 + 0 * 2 * * 1 + 1 * 2 * * 2 ),sixteenFoo( 0 * 2 * * 0 + 1 * 2 * * 1 + 1 * 2 * * 2 + 1 * 2 * * 3 )) |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2017-06-22 csharp: Use of Is and As operators in csharp