c# – 为什么Bytes残留?

c# – 为什么Bytes残留?,第1张

概述我最近一直在玩一些字节数组(处理灰度图像).一个字节的值可以是0-255.我正在修改字节,并遇到了我分配给字节的值超出字节范围的情况.它正在为我正在玩的图像做出意想不到的事情. 我写了一个测试,并了解到该字节仍然存在.例: private static int SetByte(int y){ return y;}.....byte x = (byte) SetByte(-4);C 我最近一直在玩一些字节数组(处理灰度图像).一个字节的值可以是0-255.我正在修改字节,并遇到了我分配给字节的值超出字节范围的情况.它正在为我正在玩的图像做出意想不到的事情.

我写了一个测试,并了解到该字节仍然存在.例:

private static int SetByte(int y){    return y;}.....byte x = (byte) SetByte(-4);Console.Writeline(x);//output is 252

有一个结转!当我们走另一条路时,就会发生这种情况.

byte x = (byte) SetByte(259);Console.Writeline(x);//output is 3

我希望它在第一种情况下将其设置为255,在第二种情况下将其设置为0.这个结转的目的是什么?是不是因为我正在投射这个整数赋值?什么时候在现实世界中有用?

解决方法
byte x = (byte) SetByte(259);Console.Writeline(x);//output is 3

SetByte结果的强制转换是将模256应用于整数输入,有效地丢弃超出一个字节范围的位.

259%256 = 3

原因:实施者选择仅考虑8个最低有效位,忽略其余位.

总结

以上是内存溢出为你收集整理的c# – 为什么Bytes残留?全部内容,希望文章能够帮你解决c# – 为什么Bytes残留?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1224563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存