Golang は逆コンパイルできますか?
Golang はバイナリ ファイルにコンパイルされているため、Golang を逆コンパイルできません。バイナリ ファイルは、ASCII および拡張 ASCII 文字で書かれたデータまたはプログラム命令を含むファイルです。これらのファイルには、特殊な形式とコンピュータ コードが含まれています。 , そのため逆コンパイルできません。
バイナリ ファイルの利点
バイナリ ファイルを使用する理由。理由はおそらく 3 つあります。
1 つ目は、バイナリ ファイルはスペースを節約するためであり、文字データを保存する場合には 2 つのファイルに違いはありません。ただし、数値、特に実数を格納する場合は、バイナリの方がスペースを節約できます。たとえば、実数 *4 データ: 3.1415927 を格納するには、テキスト ファイルに 9 バイトが必要で、それぞれ: 3. 1 4 1 5 9 2 7 these 9 を格納します。 ASCII 値ですが、バイナリ ファイルには 4 バイトしか必要ありません (DB 0F 49 40)
2 番目の理由は、メモリ内の計算に含まれるデータはフォーマットされていないバイナリ形式で保存されるため、ファイルに保存するにはバイナリを使用することです。より速いです。テキストファイルとして保存した場合は変換処理が必要です。データ量が多い場合、両者の速度には大きな差が生じます。
第三に、比較的正確なデータの場合、バイナリ ストレージを使用しても有効なビットが失われることはありません。
バイナリファイルの保存方法
バイナリファイルを次のように列挙します。
00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54
00000010h:41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50; ABCDEFGHIGKLMNOP
リストここで出てくるのは、UltraEdit (UE) で表示されるものです。実際には、赤い部分だけがファイルの内容です。前のものは UE によって追加された行番号です。以下は、UE が文字として解釈しようとする参照です。
このファイルの長さは 32 バイトです。それぞれ 16 バイトの 2 つの列として表示されます。実際、これは UE の単なる表示です。実際のファイルには個別の行はありません。このファイルの内容を知っているだけでは、説明がなければ有益な情報は得られません。
以下に説明を規定します。最初の 4 バイトは 4 バイトの整数データ (0F 01 00 00 16 進数: 10Fh 10 進数: 271) であると考えられます。この 4 バイトの後の 4 バイトは、さらに 4 バイトの整数データ (16 進数: 0F 03 00 00: 10 進数: 30Fh: 783) です。次の 4 バイト (12 53 21 45) は 4 バイトの実データを表します: 2.5811919E 3.次の 4 バイト (58 62 35 34) は、別の 4 バイトの実行データを表します: 1.6892716E-7。そして、最後の 16 バイト (41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50) のみが 16 バイトの文字列 (ABCDEFGHIGKLMNOP) であると考えられます
実際には、バイナリ ファイルにはデータが格納されているだけです。たとえば、上記の 9 バイト目から 16 バイト目 (12 53 21 45 58 62 35 34) は、2 つの 4 バイトの実数型であると考えていましたが、実際には 8- バイトであると考えることができます。バイト文字タイプ (S!EXb54)。次の 16 バイト文字列 (ABCDEFGHIGKLMNOP) は、2 つの 8 バイト整数、4 つの 4 バイト整数、または 2 つの 8 バイト実数型と 4 つの 4 バイトの実数型などとみなすこともできます。
したがって、バイナリファイルを前にした場合、その意味を正確に知ることはできず、データの保存方法の説明が必要になります。この記述により、どのバイトから何バイトまでがどのようなデータであり、格納されているデータの意味は何かがわかります。そうでなければ、私たちは推測するか、無力になるしかありません。
推奨チュートリアル: 「Go チュートリアル 」
以上がGolangは逆コンパイルできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。