最も一般的に使用されるのは、Python の基底変換用の組み込み関数です。一般に、組み込み関数を使用して変換する場合は、コンソールから入力された文字列またはカスタムの文字列は最初に 10 進数に変換され、次に他の 10 進数に変換されます。一般的な変換は、2 進数、10 進数、8 進数、および 16 進数です。次の 1 つの原則に従います:
int 関数を使用して他の基数を 10 進数に変換し、bin を使用します関数を使用して他の基数を 2 進数に変換し、oct 関数を使用して他の基数を 8 進数に変換し、hex 関数を使用して他の基数を 16 進数に変換します。また、Decimal の助けを借りて、変換の中間ブリッジとして使用されます。 int() 関数が使用されます。
および対応する重みに変換されると、対応する文字列には対応するプレフィックスが付き、バイナリ プレフィックスは 0b、8 進プレフィックスは 0o、16 進プレフィックスは です0x
次の表は、共通塩基間の変換を示しています
##バイナリ システム |
8 進数 | #10 進数#16 進数 | #2 進数 | |
---|---|---|---|---|
bin(int(input(), 10)) | bin(int(input(), 16)) | octal | oct(int(input(), 2)) | |
oct(int(input() 、 10)) | oct(int(input(), 16)) | Decimal | int(input(),2)) | |
- | int(input(), 16) | 16 hex | hex(int(input(), 2)) | |
hex(int(input(), 10) | - | #とにかく組み込み関数を使用する場合 必要な基本システムに変換するには、基本システムに対応する関数を使用するだけです。最初に 10 進数に変換します (int() 関数)。基数変換に関係する組み込み関数は次のとおりです: バイナリ: bin()、8 ベース: oct()、10 進数: int()、16 進数: hex() | 変換用のフォーマット関数 |
if __name__ == '__main__': print("{:b}".format(int(input(), 8))) print("{:o}".format(int(input(), 8))) print("{:x}".format(int(input(), 8)))2. 任意の塩基間の変換
#10 進数を他の基数コードに変換します
class Solution: # 将十进制数字转换为任意的进制(1-16) def decimalToAny(self, decimal: int, x: int): remainder = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"] # 当n大于0的时候执行循环 res = "" while decimal: res = remainder[decimal % x] + res decimal //= x return res if __name__ == '__main__': decimal, x = map(int, input().split()) print(Solution().decimalToAny(decimal, x))他の基数は 10
class Solution: # 快速幂: x ** n def quickPower(self, x: int, n: int): res = 1 while n > 0: if n % 2 == 1: res *= x x *= x n //= 2 return res def anyToDecimal(self, s: str, base: int): n = len(s) res = 0 for i in range(n): # 数字, ord函数获取字母的ascii值 if "0" <= s[i] <= "9": res += (ord(s[i]) - ord("0")) * self.quickPower(base, n - i - 1) # 16进制数字对应的权重 elif "a" <= s[i] <= "f": res += (ord(s[i]) - ord("a") + 10) * self.quickPower(base, n - i - 1) else: res += (ord(s[i]) - ord("A") + 10) * self.quickPower(base, n - i - 1) return res if __name__ == '__main__': li = input().split() print(Solution().anyToDecimal(li[0], int(li[1])))
Supplement## に変換されます#10 進数の負の数値は 2 進数に変換されます
m = -1 bin(m & 0xffffffff)整数間の変換
# 1. 10 -> 16 hex(number) # 2. 10 -> 2 bin(number) # 3. 10 -> 8 oct(number)# 4. x进制 -> 10 int(Union[str, bytes, bytearray],base=x) ------------------ print(int("0x16", base=16)) // 22
文字列を整数に変換しますrreee
以上がPython で一般的な 16 進数の変換方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。