405.数字を16進数に変換する(Python)
1841 ワード
タイトル
難易度:★☆☆☆☆タイプ:数学
整数を指定し、アルゴリズムを記述してこの数を16進数に変換します.負の整数については,通常,符号化演算法を用いる.
に注意
16進数のすべてのアルファベット(a-f)は小文字でなければなりません.16進数文字列に余分な先頭ゼロを含めることはできません.変換する数が0の場合、単一の文字'0'で表されます.その他の場合、16進数文字列の最初の文字は0文字ではありません.与えられた数は32ビットの符号付き整数の範囲内であることを保証する.ライブラリから提供される数値を直接16進数に変換またはフォーマットする方法は使用できません.
例
例1:入力:26出力:「1 a」
例2:入力:-1出力:「ffffffff」
に答える
これはコンピュータの基礎問題で、私たちはコンピュータのデータの記憶と表現方式に対して一定の理解が必要です.コンピュータの中で、整形変数の正数の補符号は自分で、負数の補符号は記号ビットを除いて、各位は逆を取って、それから全体+1で、そのため私達は区別しなければなりません:正数を入力し、経典数制を変換し、循環によって16に余剰を取って結果を得た. はゼロを入力し、ゼロを返します. 負数を入力するには、まず数字を符号化形式に変換し、正数で数値変換する必要があります.
ここでは10進数と16進数の変換辞書を構築しました
エンコーディングプロセスは次のとおりです.
質問やアドバイスがあれば、コメントエリアへようこそ~
難易度:★☆☆☆☆タイプ:数学
整数を指定し、アルゴリズムを記述してこの数を16進数に変換します.負の整数については,通常,符号化演算法を用いる.
に注意
16進数のすべてのアルファベット(a-f)は小文字でなければなりません.16進数文字列に余分な先頭ゼロを含めることはできません.変換する数が0の場合、単一の文字'0'で表されます.その他の場合、16進数文字列の最初の文字は0文字ではありません.与えられた数は32ビットの符号付き整数の範囲内であることを保証する.ライブラリから提供される数値を直接16進数に変換またはフォーマットする方法は使用できません.
例
例1:入力:26出力:「1 a」
例2:入力:-1出力:「ffffffff」
に答える
これはコンピュータの基礎問題で、私たちはコンピュータのデータの記憶と表現方式に対して一定の理解が必要です.コンピュータの中で、整形変数の正数の補符号は自分で、負数の補符号は記号ビットを除いて、各位は逆を取って、それから全体+1で、そのため私達は区別しなければなりません:
ここでは10進数と16進数の変換辞書を構築しました
{0: '0',
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
10: 'a',
11: 'b',
12: 'c',
13: 'd',
14: 'e',
15: 'f'}
エンコーディングプロセスは次のとおりです.
class Solution(object):
def toHex(self, num):
"""
:type num: int
:rtype: str
"""
#
dec2hex = {**{i: str(i) for i in range(0, 10)}, **{i: chr(87+i) for i in range(10, 16)}}
# , , +1
if num < 0:
num = int(''.join([str(1 - int(i)) for i in list(bin(-num)[2:].zfill(32))]), base=2)+1
#
elif num == 0:
return '0'
#
res = ''
while num:
r, num = num % 16, num // 16 # num 16
res = dec2hex[r] + res # 16 ,
return res #
質問やアドバイスがあれば、コメントエリアへようこそ~