好奇心の高まりから、バイナリコードがどのようにして文字に変換されるのですか?バイナリを自動的に単語に変換するサイトがあることを知っていますが、バイナリコードが文字に変換される前に特定の中間ステップを理解したいと思います。バイナリコードはどのくらい正確に文字に変換されますか?
答えて
"バイナリコード"とは単純な古いデータ(ビットシーケンスまたはバイトシーケンス)を意味し、 "文字"は文字を意味すると仮定すると、答えは2段階になります。しかし、まず、いくつかの背景。
- 文字は、「LATIN CAPITAL LETTER A」や「GREEK SMALL LETTER PI」や「BLACK CHESS KNIGHT」などの名前付きシンボルに過ぎません。文字(抽象記号)をグリフ(文字の絵)と混同しないでください。
- 文字セットは、特定の文字セットで、それぞれがコードポイントと呼ばれる特別な番号に関連付けられています。 Unicode文字セットのコードポイントのマッピングを確認するには、http://www.unicode.org/Public/UNIDATA/UnicodeData.txtを参照してください。 、ラテン-1、UTF-8のようなもの、
データ、それがテキストであれば、文字エンコーディングで何とか添付しなければならない。今ここに
オーケーは、2つのステップですUS-ASCIIなどがあります。各文字エンコーディングスキームは、バイトシーケンスがどのようにコードポイントとして解釈されるか(逆にコードポイントがバイトシーケンスとしてエンコードされる方法)を詳細に指定します。
バイトシーケンスがコードポイントとして解釈されると、各文字に特定のコードポイントがあるため、文字があります。
カップルノート:いくつかのエンコーディングで
- あなたは文字のデコードエラーを持つことができるので、特定のバイト列は、まったくコードポイントに対応しています。
- 一部の文字セットでは、使用されていないコードポイントがあります。つまり、まったく文字に対応しません。
つまり、すべてのバイトシーケンスがテキストとして何かを意味するわけではありません。
非常に啓発の応答。重要な知識が含まれており、これをうまく使います。ありがとうございます。 –
http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.aspここだけ見ています(ここにはありませんが、テーブルがあります)。
バイトには8ビットあります。 1バイトは1つのシンボルになります。 1ビットはオンまたはオフのいずれかです。
たとえば、011001100110111101101111
→foo
の変換を意味しますか?バイナリストリームを別々のバイト(01100110
、01101111
、01101111
)に分割し、指定された番号に対応するASCII文字をルックアップするだけです。例えば、01100110
は小数で102とコード102とのASCII文字はf
ある:
$ perl -E 'say 0b01100110'
102
$ perl -E 'say chr(102)'
f
(See what the chr
function does。)このアルゴリズムを一般化し、キャラクタ当たりのビットと異なる符号化、ポイントが残っの異なる数を有することができ同じ。
010010001001001を2ビットの8文字に分割してください(01001000、01001001)。そして、最初の8が、彼らはそれが資本だかない場合には、^ 1 2(2、2^2 2 ^の権限をやって右から左に行く決める最初の3を無視する権限
01001000. 01001001.
を発行3 2^4 2^5)。それで、すべての文字を1つだけ追加して、それを8にして、アルファベットの8文字がhなので、最初のビットが文字h、もう1ビットでそれを試してください
ここでは、 2進数をASCII文字に変換することができます。
1 - 4桁の2進数を1桁の16進数に変換します。 - 代わりの各桁
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = a (the hex number a, not the letter a)
1011 = b
1100 = c
1101 = d
1110 = e
1111 = f
(16進数Fを介している小数15を介して10進数、または「ベース16」が何番号:ここ
ヘキサ変換チャートをバイナリです10進数のように10個の異なる数字[0 - 9]を表すことができる、すなわち "基数10"の場合は、代わりに16桁の異なる数字[0 - f]を表すことができます)。
チャートバイナリ数字の任意の文字列を16進数の文字列に変換するのは簡単です。例えば
、
01000100 = 0100 0100 = 44 hex
1010001001110011 = 1010 0010 0111 0011 = a273 hex
右、十分に簡単?任意の長さの2進数を16進数に変換するのは簡単なことです。
(これは16進数が16で2進数が2のため16が2の4乗であるため動作しますので、4桁の2進数字が1桁の16進数になります。 2、バイナリを10進数にほぼ簡単に変換することはできません)。
2 - 16進数の文字列をペアに分割します。
数値をASCIIに変換する場合、2桁の16進数はすべて1文字です。そのため、16進文字列を2桁のセットに分割します。
あなたはこのような6対に7340298b392このような進数を分割します:
7340298b392 = 07 34 02 98 b3 92
(私は奇数桁の16進数を持っていたことから、私は0を先頭に追加注意してください。)
ています6桁の16進数なので、6文字になります。 (私はすぐに分かりますが、98、b3、92は文字ではありません。理由は分かります)
3 - 各16進数の数字を10進数に変換します。
左桁の10進数に16を掛け、2を足してこれを行います。
たとえば、b3 hex = 11 * 16 + 3、これは110 + 66 + 3で、179. (b hexは10進数の11です。)
4 - 10進数をASCII文字に変換します。
ここで、10進数のASCII文字を取得するには、ASCIIで65が大文字の「A」であり、97が小文字の「a」であることに留意してください。
どのような手紙は68ですか?
68大文字のアルファベットの4番目の文字ですが、そうですか?
65 = A、66 = B、67 = C、68 = D
したがって、68は「D」である。
数値が97より小さい場合は小数点以下を、大文字の場合は64を引いて、小数点以下の場合は小文字の場合は96を引いて、これはその集合に関連付けられたアルファベットの文字の数です2桁の16進数です。あなたは簡単進演算の少しを恐れていないなら
あるいは、あなたは、ステップ3をスキップすることができ、そしてちょうど例えば、思い出しにより、ASCIIへの六角から直進し、その
hex 41 = 'A'
hex 61 = 'a'
大文字の場合は40進数を、小文字の場合は60進数を減算し、アルファベットの英字を得るために左にあるものを10進数に変換します。
01101100 = 6c, 6c - 60 = c = 12 decimal = 'l'
01010010 = 52, 52 - 40 = 12 hex = 18 decimal = 'R'
例えば
(これを実行すると、それは「M」(または「M」)は、アルファベットの13文字であることを覚えておくと便利です。あなたがカウントアップまたはダウン13からにすることができますので。どちらかの端に比べて真ん中に近いの手紙を見つける。)
私はかつてシャツにこれを見て、私の頭の中でそれを読むことができました:
01000100
01000001
01000100
私はこのようにそれをやった:
01000100 = 0100 0100 = 44 hex, - 40 hex = ucase letter 4 = D
01000001 = 0100 0001 = 41 hex, - 40 hex = ucase letter 1 = A
01000100 = 0100 0100 = 44 hex, - 40 hex = ucase letter 4 = D
シャツには、妊娠中の女性が購入していたので、ちょっと涼しいと思った「DAD」と書かれていました。彼女の夫は私のようなオタクでなければなりません。
92、b3、および98が手紙ではないことを私が直ちに知ったことはありますか?
小文字の 'z'のASCIIコードは96 + 26 = 122であるため、16進数は7aです。 7aは文字の最大16進数です。 7a以上のものは手紙ではありません。
これは、人間として行う方法です。
コンピュータプログラムはどのように機能しますか?
8進数の各セットについて、数値に変換し、ASCIIテーブルで参照してください。
(これはかなり明白で簡単な方法です。典型的なプログラマーは、おそらく数十分の一の間に10または15の方法を考えることができます。詳細はコンピュータ言語環境に依存します。)
私は16進数字なしで読むのがより簡単であることを知っています、別名 '01000100'を' 2^6 + 2^2' = 68と直接見てください。 – Blauhirn
興味深い。見てみましょう、私は右端の数字は2^0だから、2^6は右端から7桁目です。 2^6は.. 2,4,8,16,32,64 ..そして2^2は2 * 2で4なので、それは68になります。アスキーコードは8ビット幅なので、私は10進数が4ビットであることが分かっている場合よりも01011010のようなものは長くかかるかもしれませんが、2から7ビットの累乗(01111010が最大の文字です)を知っていれば、その方法は十分に実用的かもしれません。 0101 = 5,1010 = A、したがって5A。文字に変換する:0x5A - 0x40(キャップ文字)= 0x1A = 16 + 10 = 26(キャップ文字で)= 'Z'。 – Shavais
本当に小数点以下を扱う方が良いのであれば、実際には小数点を4ビットまで知ることができ、8ビットごとに左のセットに16を掛けて2番目のセットを追加することができます。したがって、0101:1010 = 5:10 = 5 * 16 + 10 = 50 + 30 + 10 = 90。64が大文字を引く10進数であることを知っていれば、26( 'Z')になります。 – Shavais
- 1. 文字をバイナリコードに変換するには?
- 2. javaの文字列変換の変換はどれくらいの費用がかかりますか?
- 3. p2pネットワークはどのくらい正確に接続されますか?
- 4. 正確な部分文字列が文字列内にあるかどうか確認してください。
- 5. W3C Geolocation APIの正確さはどれくらいですか?
- 6. 文字を数字に正しく変換する方法は?
- 7. Javaが文字列から整数に変換されます
- 8. Android ScanResultタイムスタンプフィールド - 正確さはどれくらいですか?
- 9. function(){}()はどのくらい正確に機能しますか?
- 10. Java:LWJGLで作成されたキャラクターモデルなどは、どのくらい正確に作成されていますか?
- 11. Android:大文字/小文字に変換してください。
- 12. Oracleのドイツ語の文字は、ジャンク文字に変換されますか?
- 13. 一般的なプログラミングタスクはどれくらいGPUに変換されますか?
- 14. ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?
- 15. 構文解析による文字列からDateTimeへの変換が正確に失敗しました
- 16. double変数を文字列に正しく変換する
- 17. 文字列内にどのような文字が正確に表示されますか?
- 18. qmlのバイナリコードをpngイメージに変換するにはどうしたらいいですか?
- 19. 文字列に変換前の通貨記号があるかどうか確認してください
- 20. 文字列に大文字が含まれているかどうかを確認してください。
- 21. 文字列から文字を正しく削除するにはどうすればよいですか?
- 22. 文字列のリストが正確にn回見つかったかどうか確認してください
- 23. _idはMEANアプリケーションでObjectIdから文字列に変換されます
- 24. 文字が文字列に変換されない
- 25. このmysqlは正しくsql serverに変換されていますか?
- 26. マイクロコグニティブスピーカーの識別はどれくらい正確ですか
- 27. UNIXで大文字小文字を正確に変換するにはどうすればよいですか? (i18Nと仮定)
- 28. 管理ユーザーがどこにどのくらい正確に作成されていますか?
- 29. T-SQLへの変換文字列はどのように変換されますか?
- 30. アスキー文字は8バイト、変換されたワードは32バイトにどのように格納されますか
バイナリコードとはどういう意味ですか? ASCIIコードから対応する文字までを意味しますか? – Giorgio