0

我正在将字符串转换为十六进制,然后执行 & 操作。这是似乎有问题的场景:

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

您正在尝试在字符串(十六进制输出)和整数(0xFF)之间进行按位与。你不能那样做。

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

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