【问题标题】:C# Byte CalculatorC# 字节计算器
【发布时间】:2018-12-20 07:49:09
【问题描述】:

我的问题是,例如,当我要将 0x02 添加到 0xFF 时,我会得到 0x101 的值,这当然是正确的,但是否有可能从 0xFF + 0x02 获得值 0x01。因此,如果值高于0xFF,它将自行重置为0x00

【问题讨论】:

  • 你有代码吗?我会做类似a = 0xFF; b = 0x02; c = (a+b) & 0xFF;
  • 我回家试试看。

标签: c# byte calculator


【解决方案1】:

将其修改为 0x100

result = (0x02+0xff)%0x100

【讨论】:

    【解决方案2】:

    如果您想获得byte,让我们castbyte(并在unchecked 的帮助下将IntegerOverflowException 关闭可能的溢出) :

    byte a = 0x02;
    byte b = 0xFF;
    
    // unchecked: do not throw exception on overflow 
    byte result = unchecked((byte) (a + b));
    

    或者(如果您有许多个操作要执行):

    byte a = 0x02;
    byte b = 0xFF;
    
    unchecked {
      byte result1 = (byte) (a + b);
      byte result2 = (byte) (2 * a + b);
      ... 
    }
    

    【讨论】:

    • 谢谢你的回答,我回家试试,如果能解决我的问题会告诉你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多