【问题标题】:I cant put byte in byte array [duplicate]我不能将字节放入字节数组中[重复]
【发布时间】:2018-12-18 16:42:04
【问题描述】:
string cetvrtadva = textBox76.Text.Substring(12, 2);   
byte cetvrtadvaa = byte.Parse(cetvrtadva, 
System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] xor = { 0x09 ^ 0x45 ^ 0x3a ^ 0x08 ^ cetvrtadvaa };

为什么我不能将字节添加到字节数组?

错误:无法将 int 隐式转换为 byte。

【问题讨论】:

  • 如果你做了var x = 0x09; 它告诉你x 是什么类型?
  • 异或创建一个整数,因此您必须大小写返回一个字节 byte[] xor = { (byte)(0x09 ^ 0x45 ^ 0x3a ^ 0x08 ^ cetvrtadvaa) };
  • 这是设计使然,byte ^ byte 返回int,需要转换回byte。见C# XOR on two byte variables will not compile without a cast

标签: c# arrays byte


【解决方案1】:

问题是您不是将一个字节放入数组,而是一个 int。

确实,cetvrtadvaa 是一个字节,但您在异或运算中使用的所有其他数字(0x09、0x45 等)都是整数。因此,在真正完成^之前,将cetvrtadvaa转换为int,这样操作双方的类型就相同了。

因此,您需要将结果显式转换回:

byte[] xor = { (byte)(0x09 ^ 0x45 ^ 0x3a ^ 0x08 ^ cetvrtadvaa) };

【讨论】:

  • 即使所有这些文字都是字节,强制转换也是必要的,因为字节异或运算符的结果是一个 int。
猜你喜欢
  • 2016-10-26
  • 1970-01-01
  • 2012-10-18
  • 2016-04-07
  • 2020-10-02
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 2019-07-15
相关资源
最近更新 更多