0

文字列を16進数に変換してから&操作を実行しています。問題があると思われるシナリオは次のとおりです。

byte[] buffer;
string hexoutput;
char[] WaitXMSvalues = WaitXMS.ToCharArray(); // WaitXMS is a textbox, input = 10
foreach (char letter in WaitXMSvalues)
{
     // Get the integral value of the character. 
     int value = Convert.ToInt32(letter);

     // Convert the decimal value to a hexadecimal value in string form. 
     hexoutput = String.Format("{0:X}", value);
}            

buffer[0] = Convert.ToByte(hexoutput & 0xFF);

上記の行でエラーがスローされます。

Operator '&' cannot be applied to operands of type 'string' and 'int'

ここでの問題は何ですか?

次のように、C++ アプリでこれを行いました。

buffer[0] = WaitXMS->getText().getHexValue32() & 0xFF; 

そしてうまくいくようです。私の C# コードの問題点は何ですか?

助けてください!

4

2 に答える 2

3

hexoutput文字列です。&文字列と整数の間に定義された操作はありません- 質問でタイプミスしましたか? バイトマスクを適用しようとしている場合は、値がある種の整数/バイトのときにそれを行う必要があります。文字列としてではありません

たとえば、次のようにするとうまくいきますが、あまり意味がありません。

buffer[0] = (byte) (Convert.ToByte(hexoutput, 16) & 0xFF);

hexoutput変数がループで定義されているが、外部でアクセスされているという重大なエラーもあります。これも、表示されているコードが実際のコードではないことを示唆しています-コンパイラエラーが発生します:

名前「hexoutput」は現在のコンテキストに存在しません

于 2012-11-01T12:43:20.930 に答える
0

文字列 (hexoutput) と int (0xFF) の間でビットごとのANDを実行しようとしています。そんなことはできません。

しかし、最終的には、目的がバイト配列を持つことである場合、そもそもそれを 16 進形式の文字列に変換するのはなぜでしょうか? 次のことができるはずです。

buffer[0] = value & 0xFF;
于 2012-11-01T12:44:12.787 に答える