0

こんにちは、別の実行可能ファイルのバイト配列を含む実行可能ファイルを生成する必要があるプロジェクトに取り組んでいます。基本的に、私のプログラムは実行可能ファイルをロードし、対応するすべてのバイトを配列に格納してから、コードダムに実行可能ファイルのソースを渡しますビルドしてから、コードダムでコンパイルする前に、実行可能ファイルを含むバイト配列をループし、それをコードダム ソースの新しいバイト配列に追加します。

program2 をコンパイルする前に、 program1 から program2 のソースに bytearray を渡す簡単な方法はありますか?

ソース文字列 Oo に bytearray :S を追加できるように、ソースを 3 つの部分に分割したことに注意してください。

私は完成したコードを調べましたが、何も問題はありませんが、コードダムでコンパイルすると、次のエラーが発生します

Error: C\Users\*myname*\AppData\Local\Temp\ycfx9ffp.0.cs(1,246) : error CS0031: Constant value '197185' cannot be converted to a 'byte'

そして、その文字列をデバッグする方法がわかりません笑:S

これは、ソースにバイトを追加するために使用するループです。

foreach(byte mybyte in stryker)
        {
            if (mybyte != stryker[stryker.Length - 1])
                part2 += mybyte + ", ";
            else
                part2 += mybyte;
        }
        string source = part1 + part2 + part3;
4

2 に答える 2

1

500 が指摘したように、バイト配列に最後のバイトと同じバイトがある場合、コードは正しく動作しません。これは非常に可能性が高いです。

おそらく、コードを修正する最も簡単な方法は、ライブラリ メソッドを使用してバイトを結合することです。

part2 = string.Join(", ", stryker);

ソースコード内にバイト配列を持つことは、私には良い考えのようには思えません。代わりに埋め込みリソースを使用する必要があると思います。

于 2013-01-07T20:39:42.763 に答える
1

この部分:

if (mybyte != stryker[stryker.Length - 1])
                part2 += mybyte + ", ";

「stryker」のバイトが一意であると想定しているようです。つまり、最後の値 (stryker[stryker.Length - 1]) は他の場所には表示されません。

そうですか?

于 2013-01-07T19:35:03.733 に答える