c# 值对于无符号的字节太大或太小

雪绒花痴 2020-05-07 02:39:53





因为测试需要,数组里的值会变动,我想让byte[]数组里的第14位等于前面的所有值的总和,但加到第七位的0x68就会显示下面的错误。
数组里是16进制的。
...全文
2476 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42395628 2020-05-10
  • 打赏
  • 举报
回复
按16进制相加取最后2位,放到校验位
Pei你看雪 . 2020-05-09
  • 打赏
  • 举报
回复
0.00.0.0
luj_1768 2020-05-08
  • 打赏
  • 举报
回复
通常这种计算数据不通过网络传输,而是在接收方通过计算获得。如果是校验,没有只用累加的,过去比较经典的是用长除法、现在大多使用奇偶校验,这种数据的数据量通常都很大、两边都做累加和计算,系统负担会不会太大?
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 15 楼 杀马特丶蛮牛 的回复:
按16进制相加取最后2位,放到校验位,不是累加前面所有的和
前面那些数值也是16进制的,所以是相加 我刚才已经自己琢磨出来了,已经能成功显示了,感谢各位大佬的帮助,结贴
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
按16进制相加取最后2位,放到校验位,不是累加前面所有的和
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 13 楼 wanghui0380 的回复:
额,人家告诉你的是“异或校验” 或“算术和校验”,不是累加校验
额,我不太懂大神你说的这些专业名词,我在成品程序上测试的这检验码就是将前面的值相加,不信的话大神你可以打开计算器的16进制加一下试试看 下面就是成品程序,我只是模仿它进行学习
wanghui0380 2020-05-07
  • 打赏
  • 举报
回复
额,人家告诉你的是“异或校验” 或“算术和校验”,不是累加校验
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 11 楼 杀马特丶蛮牛 的回复:
[quote=引用 10 楼 雪绒花痴 的回复:] [quote=引用 8 楼 杀马特丶蛮牛 的回复:] [quote=引用 7 楼 雪绒花痴 的回复:] [quote=引用 6 楼 杀马特丶蛮牛 的回复:] 0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
第七位 [/quote] 反正肯定会超过255的,存byte存不进去的,你是要做啥?如果单纯的想计算和的话直接存int里,如果是做校验,就听楼上功夫熊猫的[/quote] 我这条数组是要通过串口发送到外面的数据,第14位是要相加前面所有的数值,该怎么做啊[/quote] 还有这种操作?一般都是最后加校验位,你问问硬件那边吧,这不合理的[/quote] 这不关硬件的事吧,我是按公约协议来设计的,看图片,检验码后面还有个终止位,我现在要的就是检验码,就是相加前面的所有值
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
引用 10 楼 雪绒花痴 的回复:
[quote=引用 8 楼 杀马特丶蛮牛 的回复:] [quote=引用 7 楼 雪绒花痴 的回复:] [quote=引用 6 楼 杀马特丶蛮牛 的回复:] 0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
第七位 [/quote] 反正肯定会超过255的,存byte存不进去的,你是要做啥?如果单纯的想计算和的话直接存int里,如果是做校验,就听楼上功夫熊猫的[/quote] 我这条数组是要通过串口发送到外面的数据,第14位是要相加前面所有的数值,该怎么做啊[/quote] 还有这种操作?一般都是最后加校验位,你问问硬件那边吧,这不合理的
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 8 楼 杀马特丶蛮牛 的回复:
[quote=引用 7 楼 雪绒花痴 的回复:] [quote=引用 6 楼 杀马特丶蛮牛 的回复:] 0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
第七位 [/quote] 反正肯定会超过255的,存byte存不进去的,你是要做啥?如果单纯的想计算和的话直接存int里,如果是做校验,就听楼上功夫熊猫的[/quote] 我这条数组是要通过串口发送到外面的数据,第14位是要相加前面所有的数值,该怎么做啊
  • 打赏
  • 举报
回复
你咋算的?先Convert.ToInt32,七位加起来是134?
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
引用 7 楼 雪绒花痴 的回复:
[quote=引用 6 楼 杀马特丶蛮牛 的回复:] 0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
第七位 [/quote] 反正肯定会超过255的,存byte存不进去的,你是要做啥?如果单纯的想计算和的话直接存int里,如果是做校验,就听楼上功夫熊猫的
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 6 楼 杀马特丶蛮牛 的回复:
0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
第七位
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
0x68 = 104 0x11 = 17 你算下到第几位超过255了?0x68并不是68,16进制要转成10进制来算的
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
额,溢出了。 我不知道你为啥要这样。如果是校验。请选择校验算法。 比如 循环异或校验,Crc校验,奇偶校验
没用过你说的这些检验方法,不太懂,我这里是要将前面的所有值相加,也搞不懂为什么会溢出,这里相加不是还没超出255吗,
雪绒花痴 2020-05-07
  • 打赏
  • 举报
回复
引用 2 楼 杀马特丶蛮牛 的回复:
byte最大255
我知道byte范围到255,他相加到第七位才134,为什么会溢出
wanghui0380 2020-05-07
  • 打赏
  • 举报
回复
额,溢出了。 我不知道你为啥要这样。如果是校验。请选择校验算法。 比如 循环异或校验,Crc校验,奇偶校验
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
byte最大255
杀马特丶蛮牛 2020-05-07
  • 打赏
  • 举报
回复
取值0-255

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧