C#:将一个负整数转换为一个字节的结果
发布时间:2020-12-15 03:47:27 所属栏目:百科 来源:网络整理
导读:我看了 a project的源代码,我注意到以下 statement(keyByte和codedByte都是类型字节): return (byte)(keyByte - codedByte); 我现在想知道在keyByte小于codedByte的情况下会产生什么结果,这会导致一个负整数. 经过一些实验以了解一个值为[-255:-1]的值的负
我看了
a project的源代码,我注意到以下
statement(keyByte和codedByte都是类型字节):
return (byte)(keyByte - codedByte); 我现在想知道在keyByte小于codedByte的情况下会产生什么结果,这会导致一个负整数. 经过一些实验以了解一个值为[-255:-1]的值的负整数的结果,我得到以下结果: byte result = (byte) (-6); // result = 250 byte result = (byte) (-50); // result = 206 byte result = (byte) (-17); // result = 239 byte result = (byte) (-20); // result = 236 因此,只要-256 < a< 0,我能够通过以下方式确定结果: result = 256 + a; 我的问题是:我应该总是期望是这样吗? 解决方法
是的,这将永远是这种情况(即它不仅仅依赖于你的环境或编译器,而是被定义为C#语言规范的一部分).见
http://msdn.microsoft.com/en-us/library/aa691349(v=vs.71).aspx:
接下来的一个问题是,如果你把-256和-1之间的负数int的高阶位删掉,并把它读成一个字节,你会得到什么?这是你通过实验已经发现的:它是256 x. 请注意,字节顺序并不重要,因为我们丢弃高阶(或最高有效位),而不是“第一”24位.所以无论我们从哪一端接收,我们都留下了构成该int的最低有效字节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – ZedGraph – 我正在寻找使用DateTime的示例
- swift – 通用功能中无法识别协议一致性
- JSONArray转List<T>
- 使用C++进行Cocos2d-x游戏开发入门过程中的要点解析
- Oracle 11gR2 RAC Database使用emca配置集群dbconsole
- ruby – initialize’:rack-test需要一个机架应用程序,但没
- Oracle中 lsnrctl命令使用总结(推荐)
- flex与js交互浅析
- 数组 – 使用SimpleXMLElement和keys数组的Twig“in”运算符
- cocos2dx ClippingNode实现stencil效果