進数変換KAZOERU

10進数の255は、2進数で11111111(1111 1111)、8進数で377、16進数でFFです。「日本語」という文字はUTF-8のバイト列でE6 97 A5 E6 9C AC E8 AA 9E(9バイト)になります(RFC 3629にも同じ例が載っています)。整数は200桁まで、負の数にも対応しています。

進数の変換
変換結果
2進数1111 1111
8進数377
10進数255
16進数FF

2進数の桁数 8桁

使い方

  1. 「変換する数」に数を入れ、「この数の進数」で、その数が2進数(二進数)・8進数・10進数・16進数のどれで書かれているかを選ぶ
  2. 2進数・8進数・10進数・16進数に直した結果が、その場で4つ同時に表示される。16進数の英字は大文字でも小文字でもよく、0x・0b・0oの接頭辞や、空白・下線の区切りは読み飛ばす
  3. 文字の変換は、下の「文字を2進数・16進数にするには?」で、バイト列から文字へ戻す変換は「16進数・2進数のバイト列を文字に戻すには?」で行う
  4. URLに条件を付けて開くと、その条件で最初から表示される(例: /shinsu/?v=FF&base=16、文字は /shinsu/?text=%E3%81%82、バイト列は /shinsu/?bytes=E3+81+82&bb=16)。各欄の下の「この条件のURLをコピー」でも同じ形のURLを作れる

2進数・8進数・10進数・16進数の対応は?(早見表)

16進数の1桁は2進数の4桁に、8進数の1桁は2進数の3桁に、ちょうど対応します。16進数の1桁で表せる0〜15を2進数の4桁にそろえて並べると、次のとおりです(先頭の0は、4桁にそろえるために付けています)。

10進2進8進16進
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

区切りのよい値の対応は、次のとおりです。10進数の数をタップすると、その数で計算欄が開きます。

10進2進8進16進
161 00002010
3210 00004020
64100 000010040
100110 010014464
127111 11111777F
1281000 000020080
2551111 1111377FF
2561 0000 0000400100
1,00011 1110 100017503E8
1,024100 0000 00002000400
4,0951111 1111 11117777FFF
65,5351111 1111 1111 1111177777FFFF

16進数を10進数に変換するには?

各桁の数に、その桁の重み(位取りの底の累乗)を掛けて、全部足します。16進数なら、右から順に1・16・256…が重みです。

たとえば16進数の1Fは、1 × 16 + 15 × 1 = 31で、10進数の31です(A=10、B=11、C=12、D=13、E=14、F=15として計算します)。2進数の1011も同じ形で、1 × 8 + 0 × 4 + 1 × 2 + 1 × 1 = 11と、10進数の11になります。8進数も、重みが8の累乗になるだけで同じ計算です。

10進数の値 = 各桁の数 × その桁の重み の合計

10進数を2進数や16進数にするには?

10進数の数を、変換したい進数の底で割り算して、余りを書き出します。商が0になるまで繰り返し、余りを最後に出たものから順に(下から上へ)並べると答えです。

100を2進数にする手順は次のとおりで、余りを下から読むと1100100です。

16進数にするときは、255を16で割ります。255 ÷ 16 = 15 余り 15(F)、15 ÷ 16 = 0 余り 15(F)となり、余りを下から読むとFFです。

2進数と16進数・8進数は、どうやって行き来する?

2進数の桁を、右から4桁ずつ区切ると16進数の1桁に、右から3桁ずつ区切ると8進数の1桁になります。10進数を経由せずに変換できます。

10進数の255の2進数は11111111です。右から4桁ずつ区切ると「1111」「1111」で、それぞれ「F」「F」にあたるので、16進数はFFです。右から3桁ずつ区切ると「11」「111」「111」で、それぞれ「3」「7」「7」にあたるので、8進数は377です。左端が3桁に足りない区切りは、0を補って数えます(「11」は「011」と同じ)。

文字を2進数・16進数にするには?

文字をUTF-8という規格の決まりでバイトの並びに直し、各バイトを16進数(2桁)または2進数(8桁)で書きます。下の欄に文字を入れると、バイト列がその場で表示されます。

文字をバイト列に変換
UTF-8のバイト列
16進数E6 97 A5 E6 9C AC E8 AA 9E
2進数11100110 10010111 10100101 11100110 10011100 10101100 11101000 10101010 10011110

文字数・バイト数 3文字・9バイト

  • 日 U+65E5 E6 97 A5 11100110 10010111 10100101
  • 本 U+672C E6 9C AC 11100110 10011100 10101100
  • 語 U+8A9E E8 AA 9E 11101000 10101010 10011110

UTF-8は、文字の番号(コードポイント。U+0041のように書く)の大きさで、使うバイト数を1〜4バイトに分けます。範囲ごとのビットの並びは次のとおりで、x の部分に、文字の番号を2進数で書いたビットを入れます。文字の番号の右端(いちばん下のビット)が、最後のバイトの右端に来ます。

たとえば「あ」の番号はU+3042で、16進数の3042は2進数で0011000001000010です(xの数にそろえて16桁で書いています)。これを3バイトの型 1110xxxx 10xxxxxx 10xxxxxx のxに、左から順に入れると 11100011 10000001 10000010 になり、16進数で書くとE3 81 82です。U+D800〜U+DFFFは文字として使わない領域で、UTF-8に変換できません。

16進数・2進数のバイト列を文字に戻すには?

バイト列をUTF-8の決まりで文字ごとに区切って、文字の番号に戻します。下の欄に16進数または2進数のバイト列を入れると、文字がその場で表示されます。

バイト列を文字に変換
もとの文字
文字日本語

文字数・バイト数 3文字・9バイト

  • 日 U+65E5 E6 97 A5 11100110 10010111 10100101
  • 本 U+672C E6 9C AC 11100110 10011100 10101100
  • 語 U+8A9E E8 AA 9E 11101000 10101010 10011110

バイト列は、空白・カンマ・コロン・ハイフン・下線で区切って入れられ、各バイトに0x(16進数)や0b(2進数)を付けてもかまいません。区切りがあるときは、区切られた1つ1つが2桁(16進数)または8桁(2進数)の倍数の桁数でなければエラーにします(「4 1 2 0」を「41 20」とは読みません)。

UTF-8として読めない並びは、別の文字に置き換えず、何バイト目から読めないかをメッセージで知らせます。RFC 3629は、読んではいけない並びの例として、最短でない表し方の C0 80 と、サロゲートの対を表す ED A1 8C ED BE B4 をあげています。

負の数や大きな数はどう扱う?

負の数は、数の大きさに「-」を付けて各進数で書きます。2の補数での表し方には変えません。大きな数は、200桁まで丸めずに全桁を変換します。

10進数の-42は、2進数で-10 1010、8進数で-52、16進数で-2Aです。大きな数の例として、10進数の1,000,000,000,000,000,000,000,000,000,000(10進数の1の後ろに0が30個)は、16進数でC9F2C9CD04674EDEA40000000、2進数で100桁です。

このツールの前提

本ツールの結果は、入力した値を定義どおりに変換したものです。プログラム・通信・機器に入力する値として使うときは、使う言語や規格の仕様に合った書き方(接頭辞・桁数・文字コードなど)をご自身で確かめてください。

よくある質問

0xFFや0b1010のような書き方は入力できますか?

できます。選んだ進数の接頭辞(16進数は0x、2進数は0b、8進数は0o)が付いていれば、外して読みます。たとえば16進数を選んで0xFFと入れると、16進数のFFとして変換します。別の進数の接頭辞(10進数を選んだまま0xFFなど)を入れたときは、進数を選び直すよう案内を出します。16進数を選んでいるときの0b1は接頭辞ではなく、16進数の数字「0」「B」「1」の並びとして読みます。

小数(0.5など)は変換できますか?

変換できません。このツールが扱うのは整数だけです。小数点(「.」や、かな入力の「。」)が入っているときは、小数は扱っていないというメッセージを出し、整数部だけを読んで変換することはしません。

負の数の2進数は、2の補数で表示されますか?

2の補数では表示しません。負の数は、数の大きさに「-」を付けて各進数で書きます。たとえば10進数の-42は、2進数で-101010、8進数で-52、16進数で-2Aです。2の補数は桁数(ビット数)を決めて表す方法で、このツールには桁数を決める欄がありません。

何桁の数まで変換できますか?

入力できる数は200桁まで(先頭の0を除く。入力した進数での桁数)です。計算はBigInt(JavaScriptの大きな整数の型)で行い、2の100乗(1,267,650,600,228,229,401,496,703,205,376。2進数では101桁)のような大きな数も、丸めずに全桁を変換します。200桁を超えるときは、変換せずにメッセージを出します。出力は桁が増えることがあり、たとえば16進数の200桁は2進数では最大800桁になります(先頭の桁によって変わります)。

16進数の英字は、大文字と小文字のどちらで入れますか?

大文字でも小文字でも読みます。全角の英数字(「F」や「1F」)も半角として読みます。結果の英字は大文字で表示します。

結果の空白やカンマは何ですか?

読みやすくするための区切りです。2進数は右から4桁ごとに空白、10進数は右から3桁ごとにカンマを入れています。この表示のまま入力欄に貼り付けても、区切りを読み飛ばして同じ数として変換します(カンマは10進数の3桁ごとの区切りだけ読みます)。

Shift_JISなど、UTF-8以外の文字コードにも変換できますか?

変換できません。文字の変換が扱う文字コードはUTF-8だけです。Shift_JIS・EUC-JP・UTF-16などは扱っていません。

絵文字は何バイトになりますか?

UTF-8では、文字の番号がU+10000以上の文字は4バイトです。「😀」(U+1F600)は4バイトで、16進数ではF0 9F 98 80になります。「A」(U+0041)のようにU+007F以下の文字は1バイトで、41です。

バイト列を文字に戻すときに、エラーになるのはなぜですか?

入力したバイト列が、UTF-8の決まりに合っていないためです。UTF-8には、文字の先頭に使えないバイト(80〜C1とF5〜FF)、続きのバイトが足りない並び、最短でない表し方(C0 80など)、サロゲートの領域(U+D800〜U+DFFF)を表す並びが含まれていてはならないという定めがあります。このツールは、読めない並びを別の文字に置き換えずに、何バイト目から読めないかを知らせます。

出典

UTF-8の定義: F. Yergeau「RFC 3629 UTF-8, a transformation format of ISO 10646」(STD 63、2003年11月)。UTF-8の文字ごとのバイト数とビットの並び(3節)、使わない領域(サロゲート)と不正な並びの例(3節)、バイト列の文法(4節)、先頭のU+FEFFの扱い(6節)、文字の番号の書き方(2節)、日本語・ハングルなどの例(7節)に基づいています。RFC 3629の本文・RFC Editorの案内ページ

進数の変換: 位取り記数法の定義どおりの計算です(BigIntによる整数計算)。

RFC 3629の著作権表示: Copyright (C) The Internet Society (2003). All Rights Reserved.

当サイトは民間のサイトで、IETF・RFC Editorその他の機関が作成・監修したものではありません。バイト列の変換は、RFC 3629の表と文法に基づいて当サイトが実装したものです。

最終更新日