ホームページ  >  記事  >  バックエンド開発  >  golangは逆コンパイルできるのでしょうか?

golangは逆コンパイルできるのでしょうか?

青灯夜游
青灯夜游オリジナル
2022-12-28 11:14:146061ブラウズ

Golang は逆コンパイルできません。理由: Golang はコンパイルされた静的言語です。Golang はコンパイル後にバイナリ ファイルを生成します。バイナリ ファイルは、ASCII および拡張 ASCII 文字で書かれたデータまたはプログラム命令を含むファイルです。これらのファイルには特殊な形式とコンピュータ コードが含まれているため、逆コンパイルできません。

golangは逆コンパイルできるのでしょうか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Golang は逆コンパイルをサポートしていません。

理由:

Go 言語はコンパイルされた静的言語であるため、Go 言語プログラムを実行する前に、バイナリの実行可能ドキュメントにコンパイルする必要があります。

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) しか必要としません (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。