运营商'&'不能应用于'string'和'int'类型的操作数

时间:2012-11-01 12:40:53

标签: c# .net type-conversion

我正在努力将字符串转换为十六进制,然后执行&操作。以下是似乎存在问题的情景:

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#代码有什么问题?

请帮忙!

2 个答案:

答案 0 :(得分:3)

hexoutput是一个字符串;字符串和整数之间没有定义的&操作 - 你在问题中输错了吗?如果您尝试应用字节掩码,那么当值是某种整数/字节时,您必须这样做; 作为字符串。

例如,以下内容可行,但有点无意义:

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

还有一个重大错误,即你的hexoutput变量在 循环中定义,但在外部访问,再次表明显示的代码实际代码 - 会产生编译器错误:

  

当前上下文中不存在名称'hexoutput'

答案 1 :(得分:0)

您正在尝试在字符串(hexoutput)和int(0xFF)之间按位 AND 。你不能这样做。

但最终,如果你的目标是拥有一个字节数组,为什么你首先将它转换为十六进制格式的字符串?你应该能够:

buffer[0] = value & 0xFF;