Python中進変換およびint()関数

4326 ワード

Python 2の文字コード:
Pythonのコード(あなたが書いたプログラムの文字を指す)の文字のデフォルトコードはASCIIです.つまり、デフォルトではASCIIの文字しか入力できません.他のASCIIの文字を入力しないと、あなたが書いたコードは正しく認識されません.
だから、ASCII以外の文字を入力するには、文字コードの宣言が必要です(具体的にはネット上にはたくさんありますが、ここでは言いません)が、IDEがたくさんあるので、コード宣言をしなくても中国語を入力しても間違いはありませんが、Pythonのサポートではありません.
Pythonでの進数変換
まず、16進数、10進数、2進数という概念を明確にする必要があります.ただ、整数値の表現方法です.同じ数値でも16進数、10進数、2進数の表現がありますが、16進数、10進数、2進数を使って同じ数値を作成することもできます.また、一般的に一定の範囲で、異なる方法で表される同じ数字のメモリ内の記憶構造も同じである.
したがって、いわゆる16進数から10進数、10進数から2進数とは、1つの整数クラスの数値ではなく、整形クラスの数値には進数変換の概念がありません.理由は、前の段落で述べたようにします.
進数変換とは何か
これは、文字列で表される数値を文字型数値と呼ぶことができるというもう一つの概念を理解する必要があります.これは数値の表現方法であり、本質的には数字といくつかの字幕からなる数値を表す文字列であり、いわゆる進数変換は、それをめぐって行われます.
進数変換は次のように分けられます.
1、整数型から文字型に変換する数値
bin()oct()hex()str()(10進数、および固有表現で定義された2/8/16進数整数)
2進数、8進数、10進数、16進数の整数値転文字型数値関数
2、文字型の数値を整数型に変換する
int() 
3、文字型数値の相互回転
変換、次の進数変換テーブルを参照できます
進数変換テーブル:

2進法
8進法
10進法
16進法
2進法
-
bin(int(x, 8))
bin(int(x, 10))
bin(int(x, 16))
8進法
oct(int(x, 2))
-
oct(int(x, 10))
oct(int(x, 16))
10進法
str(int(x, 2))
str(int(x, 8))
-
str(int(x, 16))
16進法
hex(int(x, 2))
hex(int(x, 8))
hex(int(x, 10))
-
PS 1:異なる進数変換が見られ、すべて整数値を橋渡しとして、異なる進数の文字型数値の変換が行われ、int()関数は1つの文字型数値を整数値に変換することができ、上述したように、整数値タイプには進数変換の概念はありません.したがって、この整数値を他の進数文字型数値で回転させる必要がある場合は、対応する整数値を文字型数値に変換する関数を呼び出す必要があります.Pythonでは10進数がデフォルトで使われているので、整数値を10進数の文字型数値に変換するには、実際には何も必要ないので、直接printすればいいのです
あなたが知らないint()関数
実際にint()関数は、文字型数値を2/8/10/16進数に変換するだけでなく、2-36(1を除く)進数の文字型数値を整数値に変換することもできます.
int関数の説明は以下の通りです.
int([number | string[, base]])
Convert a number or string to an integer. If no arguments are given, return 0. If a number is given, return number.__int__(). Conversion of floating point numbers to integers truncates towards zero. A string must be a base-radix integer literal optionally preceded by ‘+’ or ‘-‘ (with no space in between) and optionally surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with ‘a’ to ‘z’ (or ‘A’ to ‘Z’) having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O, or 0x/0X, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so that int('010', 0) is not legal, while int('010') is, as well as int('010', 8).
の説明は以下の通りです.
1つの数値または文字列を整数に変換し、パラメータに0を返さなければ、パラメータが数値であれば、数値の構造から戻ります.浮動小数点型の数値は切り捨てられて整数型に変わり、
stringパラメータはbase-radixタイプの文字列でなければなりません.「+」または「-」で始まることができますが、数字点とスペースを持つことはできません.しかし、全体の先頭と末尾にスペースを持つことができます.n進数は0からn-1で表され、9より大きい数字はa-z(またはA-Z)で10-35で表され、2/8/16進数は0 b/0 o/0 xで始まることができ、大文字と小文字を区別しません.
baseパラメータはデフォルトで10で、0-36を受け入れますが1は含まれません.0進数は字面の意味で変換されます.......
int興味深い点は、0-36(1を除く)の進数変換が可能であることです.
>>> int("11",9)
10
>>> int("13",7)
10
>>> int("a",17)
10

0進法は2/8/10/16進法だと自動的に判断しますが、これらでなければ間違いを報告します.
>>> int("111",0)
111
>>> int("0b111",0)
7
>>> int("0o111",0)
73
>>> int("0x111",0)
273
>>> int("0xff",0)
255
>>> int("0xgg",0)  # 17  
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 0: '0xgg'

例を挙げる
1、整数型から文字型に変換する数値
数値16を2/8/10/16進数の文字列数値に変換
>>> bin(16)
'0b10000'
>>> oct(16)
'020'
>>> str(16)
'16'
>>> hex(16)
'0x10'

2進数、8進数、10進数、16進数の整数値転文字型数値関数
2、文字型の数値を整数型に変換する
2/8/10/16進数の文字列を数値16に変換
>>> int("0b10000",2)
16
>>> int("0o020",8)
16
>>> int("16",10)
16
>>> int("0x10",16)
16

3、文字型数値の相互回転
>>> bin(int("16"))  # 10        2       
'0b10000'
>>> oct(int("10",16))  # 16        8       
'020'
>>> bin(int("020",8)) # 8        2       
'0b10000'