我正在努力将字符串转换为十六进制,然后执行&操作。以下是似乎存在问题的情景:
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#代码有什么问题?
请帮忙!
答案 0 :(得分:3)
hexoutput
是一个字符串;字符串和整数之间没有定义的&
操作 - 你在问题中输错了吗?如果您尝试应用字节掩码,那么当值是某种整数/字节时,您必须这样做; 不作为字符串。
例如,以下内容可行,但有点无意义:
buffer[0] = (byte) (Convert.ToByte(hexoutput, 16) & 0xFF);
还有一个重大错误,即你的hexoutput
变量在
当前上下文中不存在名称'hexoutput'
答案 1 :(得分:0)
您正在尝试在字符串(hexoutput)和int(0xFF)之间按位 AND 。你不能这样做。
但最终,如果你的目标是拥有一个字节数组,为什么你首先将它转换为十六进制格式的字符串?你应该能够:
buffer[0] = value & 0xFF;