2016-12-15 4 views
0

次のバイトをC#バイト配列にどのように追加できますか?バイト配列にバイトを追加するC#

00 00 00 00 00 00 00 00 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 

これは意味がありますか?

public void updateBytes(string exeName, int value) 
{ 
    long baseaddress = GetBaseAddress(exeName, exeName + ".exe"); 
    long pointer = GetPointerAddress(baseaddress + 0x04105320, new int[] { value }); 

    byte[] intBytes = "00 00 00 00 00 00 00 00 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00"; 

    WriteBytes(pointer, intBytes); 
} 

は、私はあなたが本当にには、配列に項目を追加したが与えられた値を持つ配列を作成/初期化したくないように私には思えるの助け

+0

これは」doesnのまだまだコンパイルされません。 'byte []'!= 'string' – RandomStranger

+0

[c#のバイト配列をバイト配列に追加する方法]の可能な複製(http://stackoverflow.com/questions/5591329/c-sharp-how-to-add-byte-to -byte-array) –

+0

配列オブジェクトを使用するよりも、addメソッドを持つリストオブジェクトを使用することをお勧めします。 – jdweng

答えて

0

さて、まず第一に、あなたはstringを持っていて、これを大きなnonoであるbyte[]に割り当てたいと思います。あなたがそのようにこれを行うことができます(いくつかの奇妙なプロトコルか何かのために)あなたが手でbyte[]にこれを変更できない場合:

// assign bytes to string 
string meBytes = "00 00 00 00 00 00 00 00 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00"; 
// split them by spaces 
string[] hexBytes = meBytes.Split(new char[] { (char)0x20 }); 
// extract bytes 
byte[] bytes = meBytes.Select(x => Convert.ToByte(x, 16)).ToArray(); 
// now you can write them into stream 
WriteBytes(pointer, bytes); 

をあなたも2行で行うことができます。

string meBytes = "00 00 00 00 00 00 00 00 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 04 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00"; 
WriteBytes(pointer, meBytes.Split(new char[] { (char)0x20 }).Select(x => Convert.ToByte(x, 16)).ToArray()); 
+0

'meBytes.Split(0x20)' *はコンパイルされません*: 'char'が期待されるとき' 0x20'は 'int'型です。 '0x20'は*マジックナンバーの反パターン*です(それは何の略ですか?)' ''(スペース)が明白であるとき –

+0

@DmitryBychenkoそれを指摘してくれてありがとう。修正しました。そして '0x20'(誰もが知っているように)は単なる空白文字で、16進形式のバイト/文字を書く方が便利です。 –

1

の任意の種類をいただければ幸いです。

あなたは配列を初期化するには、次の構文を使用することができます。

byte[] intBytes = {0,0,0,4,5,1,1 /* ... */ }; 
0

あなたはバイト(byte[])の配列にstringを解析したい場合は、のLINQを使用することができます。

string source = "00 00 00 00 00 00 00 00 04 05..."; 

byte[] intBytes = source 
    .Split(' ') 
    .Select(item => Convert.ToByte(item, 16)) 
    .ToArray();