我需要将二进制补码格式的字节转换为正整数字节。
范围 -128 到 127 映射到 0 到 255。
Examples: -128 (10000000) -> 0 , 127 (01111111) -> 255, etc.
EDIT为了消除混淆,输入字节(当然)是 0 到 255 范围内的无符号整数。但它使用二进制补码格式表示 -128 到 127 范围内的有符号整数。例如,输入字节值128(二进制10000000)实际上代表-128。
额外编辑好吧,假设我们有以下字节流 0,255,254,1,127。在二进制补码格式中,这代表 0、-1、-2、1、127。我需要将其限制在 0 到 255 范围内。有关更多信息,请查看这篇很难找到的文章:二进制补码 http://en.wikipedia.org/wiki/Two%27s_complement
从您的示例输入中,您只需要:
sbyte something = -128;
byte foo = (byte)( something + 128);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)