>  > アルパインスターズ Alpinestars 春夏モデル シューズ AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店

アルパインスターズ Alpinestars 春夏モデル シューズ AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店

  1. ドゥカティ 750 F1 スプロケット スプロケ ISA アイエスエー 01930 D-10 530 33T リア スプロケット スプロケ
  2. Python

Pythonで2進数、8進数 15インチステップワゴンRK2 4WDWEDS レオニス VT パールブラック/ミラーカット 6.0Jx15エナセーブ RV504 205/65R15、16進数の数値・文字列を相互に変換

Date: 2017-08-21 / Modified: 2018-03-14 / tags: Python, 文字列操作
Tweet

Pythonでは通常の10進数だけでなく2進数、8進数、16進数として数値や文字列を扱うことができる。相互に変換するのも簡単。

ここでは ディクセル ヒーティッドスリットディスクローターHS トヨタ コロナ エクシヴ ST205 リア用、

  • 整数を2進数、8進数、16進数で記述
  • 数値を2進数、8進数、16進数表記の文字列に変換
    • 組み込み関数bin(), oct(), hex()
    • 組み込み関数format()または文字列メソッドstr.format()
    • 負の整数を2の補数形式の文字列に変換
  • 2進数、8進数、16進数表記の文字列を数値に変換
    • 組み込み関数int()
  • 活用例
    • 2進数の文字列の演算
    • 2進数、8進数、16進数の相互変換

について 【送料無料】 ピットワーク バッテリー 超高性能 Xシリーズ トヨタ ハリアー SXU15W 用 AYBXL-85D23-01 車用 車 国産車 カーバッテリー バッテリー交換 PITWORK 自動車用バッテリー、サンプルコードとともに説明する。

整数ではなく浮動小数点数float型を16進数の文字列に変換したい場合は以下の記事を参照。

スポンサーリンク

アルパインスターズ ISA Alpinestars 春夏モデル シューズ CM2 AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店

プレフィックス0b, 0o, 0xをつけると、整数型intの数値をそれぞれ2進数、8進数 、16進数として扱うことができる。

bin_num = 0b10
oct_num = 0o10
hex_num = 0x10
print(bin_num)
print(oct_num)
print(hex_num)
# 2
# 8
# 16



大文字0B, 0O, 0XでもOK。

Bin_num = 0B10
Oct_num = 0O10
Hex_num = 0X10
print(Bin_num)
print(Oct_num)
print(Hex_num)
# 2
# 8
# 16



プレフィックスがついていても、型としては整数型int

print(type(bin_num))
print(type(oct_num))
print(type(hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>
print(type(Bin_num))
print(type(Oct_num))
print(type(Hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>



整数型なので RSR RS-R ダウンサス トヨタ パッソ M700A 28/4~ FF Ti2000 HALF DOWN T410THDR リアのみ RS-R ローダウン サス、そのまま普通に四則演算が可能。

result = 0b10 * 0o10 + 0x10
print(result)
# 32



Python3.6からは数値中にアンダースコア_を挿入できるようになった。アンダースコア_を繰り返すとエラーになるが、繰り返さなければ何個挿入してもよい。

アンダースコア_は数値に影響しないので桁数が多い場合などの区切りとして使える。例えば4桁ごとに_を入れると見やすい。

print(0b111111111111 is 0b1_1_1_1_1_1_1_1_1_1_1_1)
# True
bin_num = 0b1111_1111_1111
print(bin_num)
# 4095



数値を2進数、8進数、16進数表記の文字列に変換

数値を2進数、8進数、16進数表記の文字列に変換するには、

  • 組み込み関数bin(), oct(), hex()
  • 組み込み関数format()または文字列メソッドstr.format()

を使う。

負の値に対して2の補数形式で表現された文字列を取得する方法についても説明する。

アルパインスターズ アルパインスターズ シューズ シューズ 8021506620921 AST1 (25cm) 春夏モデル JP店 黒/赤 7サイズ Alpinestars DRYSTAR

組み込み関数bin(), oct(), hex()で、数値を2進数、8進数、16進数の文字列に変換できる。それぞれプレフィックス0b, 0o, 0xがついた文字列を返す。

i = 255
bin_str = bin(i)
oct_str = oct(i)
hex_str = hex(i)
print(bin_str)
print(oct_str)
print(hex_str)
# 0b11111111
# 0o377
# 0xff
print(type(bin_str))
print(type(oct_str))
print(type(hex_str))
# <class 'str'>
# <class 'str'>
# <class 'str'>



組み込み関数format()または文字列メソッドstr.format()

組み込み関数format()、または、文字列メソッドstr.format()でも、数値を2進数、8進数、16進数の文字列に変換できる。

第二引数の書式化指定文字列にb, o, xを指定することで、それぞれ2進数、8進数、16進数の文字列に変換できる。

bin_str = format(i, 'b')
oct_str = format(i, 'o')
hex_str = format(i, 'x')
print(bin_str)
print(oct_str)
print(hex_str)
# 11111111
# 377
# ff
print(type(bin_str))
print(type(oct_str))
print(type(hex_str))
# <class 'str'>
# <class 'str'>
# <class 'str'>



プレフィックス0b, 0o, 0xがついた文字列を取得したい場合は書式化指定文字列に#をつける。

bin_str = format(i, '#b')
oct_str = format(i, '#o')
hex_str = format(i, '#x')
print(bin_str)
print(oct_str)
print(hex_str)
# 0b11111111
# 0o377
# 0xff



任意の桁数で0埋めすることも可能。プレフィックスをつけて0埋めする場合はプレフィックスの分の文字数(2文字)も考慮する必要があるので注意。

bin_str = format(i, '08b')
oct_str = format(i, '08o')
hex_str = format(i, '08x')
print(bin_str)
print(oct_str)
print(hex_str)
# 11111111
# 00000377
# 000000ff
bin_str = format(i, '#010b')
oct_str = format(i, '#010o')
hex_str = format(i, '#010x')
print(bin_str)
print(oct_str)
print(hex_str)
# 0b11111111
# 0o00000377
# 0x000000ff



文字列メソッドstr.format()でも同様に変換できる。

print('bin is {:08b}'.format(i))
print('oct is {:08o}'.format(i))
print('hex is {:08x}'.format(i))
# bin is 11111111
# oct is 00000377
# hex is 000000ff



書式化指定文字列の種類や書き方など、format(), str.format()についての詳細は以下の記事を参照。

負の整数を2の補数形式の文字列に変換

負の整数をbin()format()などで2進数や16進数の文字列に変換すると、絶対値にマイナス符号が付いた形になる。

2の補数形式で表現された文字列を取得したい場合は、4bitなら0b1111(=0xf)、8bitなら0xff、16bitなら0xffffのように、

アルパインスターズ Alpinestars 春夏モデル シューズ AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店

<HANA ORGANIC> ハナオーガニック 【ホワイトケア4点セット】石けん、化粧水、美容液、乳液ピュアリキューブ85g/フローラルドロップ80m/ホワイトジェリー30ml/ムーンナイトミルク30ml, SPA treatment スパトリートメントナノエッセンスG 業務用 120mL送料無料, 【送料無料・まとめ買い×10】貝印 関孫六 マユハサミ ( プレミアム眉鋏 ) ×10点セット ( 4901601286335 ), ナチュレルSPゲルクリーム600g詰替2個セット(お徳です!)【送料無料】【14dw05】【_関東】【_近畿】【smtb-s】【HLS_DU】, マーヴェラティ マジカル リフトアップ 3個セット 20 ヴェルファイア オーナメント / エンブレム【グラージオ】20系 ヴェルファイア HYBRID Gold Emblem セット 前後7点SET N仕様, ブリヂストン REGNO レグノ GRV2 サマータイヤ 245/45R18 RAYS GRAM LIGHTS 57FXX 18 X 8 +45 5穴 114.3, 18インチストリームRN1~5WEDS レオニス VX ハイパーシルバーミラーカット 7.0Jx18エナセーブ RV504 225/40R18, TOYOTIRES トーヨー トランパス ML ミニバン TRANPATH サマータイヤ 205/55R16 MANARAY EUROSPEED ユーロスピード G10 ホイールセット 4本 16インチ 16 X 6.5 +38 5穴 114.3, 65W 60W ハリアー HARRIER エアロ(リア)/マフラーセット【トヨタモデリスタ】ハリアー 60/65 後期 Ver.2 MODELLISTA リヤスタイリングキット/寒冷地仕様車用(リヤスカート+リヤフォグランプベゼル+マフラーカッター) ターボ車用 メーカー塗装品:ブラックマイ 【クーポン利用で最大1200円OFF!】NITTO INVO 285/35R19 99W 【285/35-19】 【新品Tire】ニットー タイヤ インボ 【店頭受取対応商品】

アルパインスターズ Alpinestars 春夏モデル シューズ AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店:【送料無料】 175/65R14 14インチ BRIDGESTONE ブリヂストン バルミナ T10 5.5J 5.50-14 YOKOHAMA ヨコハマ ブルーアース AE-01F SALE サマータイヤ ホイール4本セット 【送料無料】 225/40R18 18インチ SSR エグゼキューター EX02 7.5J 7.50-18 SAFFIRO サフィーロ SF5000(限定) サマータイヤ ホイール4本セット フジコーポレーション

アルパインスターズ Alpinestars 春夏モデル シューズ AST1 DRYSTAR 黒/赤 7サイズ (25cm) 8021506620921 JP店.[Projectμ] プロジェクトμ ブレーキパッド レーシングN+ フロント用 リベロ CB4W 96/9~00/5 1.6L 本州・北海道は送料無料 沖縄・離島は送料1000円(税別) 215/55R17 94V TOYO TIRES トーヨー タイヤ SD-7 エスディーセブン B-MUD X Bマッド エックス サマータイヤホイール4本セット

国産タイヤ・アルミホイール 新品 4本セット ◆ウェッズ レオニスFY Weds LEONIS FY◆195/55R15 15インチ (195/55-15)新品トーヨー ナノエナジー 3 + バランス調整済み! パーツ Project μ プロジェクトミュー ブレーキパッド RACING999 リア パイザー G301G(FF)

、必要なビット桁数の最大値との論理積&を取る。

x = -9
print(x)
print(bin(x))
# -9
# -0b1001
print(bin(x & 0xff))
print(format(x & 0xffff, 'x'))
# 0b11110111
# fff7



2進数、8進数、16進数表記の文字列を数値に変換

2進数、8進数、16進数表記の文字列を数値に変換するには、

  • 組み込み関数int()

を使う。

組み込み関数int()

int(文字列, 基数)で基数をもとに2進数、8進数、16進数表記の文字列strを数値intに変換できる。基数を省略した場合は10進数とみなされる。

dec_num = int('10')
bin_num = int('10', 2)
oct_num = int('10', 8)
hex_num = int('10', 16)
print(dec_num)
print(bin_num)
print(oct_num)
print(hex_num)
# 10
# 2
# 8
# 16
print(type(dec_num))
print(type(bin_num))
print(type(oct_num))
print(type(hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>
# <class 'int'>



基数を0にすると プロジェクトμ RACING999 スカイライン HR30系 83.8~85.8 リア用、文字列のプレフィックス(0b, 0o, 0xまたは0B, 0O, 0X)をもとに変換される。

dec_num = int('10', 0)
bin_num = int('0b10', 0)
oct_num = int('0o10', 0)
hex_num = int('0x10', 0)
print(dec_num)
print(bin_num)
print(oct_num)
print(hex_num)
# 10
# 2
# 8
# 16
Bin_num = int('0B10', 0)
Oct_num = int('0O10', 0)
Hex_num = int('0X10', 0)
print(Bin_num)
print(Oct_num)
print(Hex_num)
# 2
# 8
# 16



活用例

2進数の文字列の演算

例えば、プレフィックス0bが付いた2進数表記の文字列の演算を行う場合。

数値(整数型int)に変換して演算し、ふたたび文字列strに戻すといった操作が簡単に行える。

a = '0b1001'
b = '0b0011'
c = int(a, 0) + int(b, 0)
print(c)
print(bin(c))
# 12
# 0b1100



2進数、8進数、16進数の相互変換

2進数、8進数、16進数の文字列をそれぞれ相互に変換することも簡単。一度数値intに変換したあと任意の書式の文字列に変換すればよい。

0埋めやプレフィックスの有無などは書式化指定文字列で制御できる。

a_0b = '0b1110001010011'
a_0x = format(int(a, 0), '#010x')
a_0o = format(int(a, 0), '#010o')
print(a_0x)
print(a_0o)
# 0x00000009
# 0o00000011



 
 
スポンサーリンク
シェア
Tweet

関連カテゴリー

関連記事

{yahoojp} {note.nkmk.me}
{yahoojp}jpprem01-zenjp40-wl-zd-54728