【问题标题】:C# - How convert integer to byte with permutation?C# - 如何通过排列将整数转换为字节?
【发布时间】:2018-04-02 06:49:07
【问题描述】:

我想将整数转换为字节。如果整数大于字节范围{0,255},则从头开始计数。我的意思是如果整数 = 260 则函数返回 5 或者如果 int = 1120 则返回 96 等等。

【问题讨论】:

  • 将其转换为字节:byte b = (byte) yourInt;
  • 此问题的预期结果存在差异,因此标记为重复的问题无法充分回答。下面的答案解决了这个差异,所以我重新提出了这个问题。

标签: c# integer byte


【解决方案1】:

你可以使用:

byte myByte = (byte)(myInt & 0xFF);

但是,请注意 260 将给出 4 而不是 5。 (例如 255->有效、256->0、257->1、258->2、259->3、260->4)

如果您真的希望 260 得到 5,那么您可能正在寻找除以 255 后的余数。可以使用以下公式计算:

byte myByte = (byte)(myInt % 255);  

【讨论】:

  • byte myByte = (byte)(myInt & 0xFF); 与直接转换为 byte 有什么不同吗?
  • 如果原始操作被强制取消检查,那么没有区别。但是,如果发生溢出检查,超出字节范围的值将导致异常。
  • 注意你也可以使用byte myByte = unchecked((byte)myInt);
  • 还要注意1120 % 2551001120 & 0xff96。 OP 的预期结果存在差异,他/她需要解决 - 但这个答案正确地说明了两种可能的解决方案。
猜你喜欢
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2022-12-03
  • 2016-02-06
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多