首页 新闻 会员 周边 捐助

c# byte数组如何乘以10

0
悬赏园豆:5 [已解决问题] 解决于 2023-06-09 08:58

如下图,想将byte[] 定义的数组 processStepByte[]中的第9个数组80乘以10变为800再储存回去,自己写成processStepByte[9]=processStepByte[9]*10; 但出错,一时没什么好思路,请问要怎么写这式子,谢谢!


tea2007的主页 tea2007 | 初学一级 | 园豆:6
提问于:2023-06-08 12:58
< >
分享
最佳答案
0

在 C# 中,byte 是一个无符号整数类型,它的取值范围是 0 到 255。如果你想将 byte 数组中的某个元素乘以 10,并将结果存储回去,需要进行类型转换。以下是一种正确的写法:

csharp
Copy code
processStepByte[9] = (byte)(processStepByte[9] * 10);
在上述代码中,(byte) 是一种类型转换,它将乘法运算的结果从整型转换为 byte 类型,以确保结果仍然在 byte 类型的取值范围内。

请注意,在进行乘法运算之前,你可能需要确保 processStepByte[9] 的值不超过 25,因为乘以 10 后的结果如果大于 255,就会溢出 byte 类型的取值范围。如果超过了范围,你可能需要考虑使用更大的整数类型(如 ushort、int 等)来存储结果。

希望这可以帮助到你。如果你有其他问题,请随时提问。

收获园豆:2
Technologyforgood | 大侠五级 |园豆:7530 | 2023-06-08 23:06

谢谢,我改成这样可以了
if (GlobalFunc.Trim(drsProcessStepFun[0]["FunctionName"])=="主缸溢流")

byte[] dataByte3=BitConverter.GetBytes(GlobalFunc.Int32(dtProcessStep.Rows[i]["DataByteValue3"])*10); //乘以10再存回去

processStepByte[8]=dataByte3[1];
processStepByte[9]=dataByte3[0];

tea2007 | 园豆:6 (初学一级) | 2023-06-09 08:55
其他回答(2)
0

因为processStepByte存储的是byte,处理完后变成int了,转成byte再存储就好了

收获园豆:2
xjournal | 园豆:207 (菜鸟二级) | 2023-06-08 13:06


超出范围?

支持(0) 反对(0) tea2007 | 园豆:6 (初学一级) | 2023-06-08 14:08
0

byte的取值范围是0~255,所以你要先搞明白你的需求是什么,而不是盲目*10

收获园豆:1
澈澈 | 园豆:440 (菜鸟二级) | 2023-06-08 14:14

我需求是用databyte3[1]、databyte3[0] 两个字节储存0-1800内的数。但byte取值范围是0~255,我应该怎样转换存进去?
我输了个999 后,发现databyte3[0]=231 、databyte3[1]=3 这两个数跟999相等?

支持(0) 反对(0) tea2007 | 园豆:6 (初学一级) | 2023-06-08 15:58

@tea2007: 存0~1800范围内的数,就不要用byte了,用short

支持(0) 反对(0) xjournal | 园豆:207 (菜鸟二级) | 2023-06-13 13:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册