如下图,想将byte[] 定义的数组 processStepByte[]中的第9个数组80乘以10变为800再储存回去,自己写成processStepByte[9]=processStepByte[9]*10; 但出错,一时没什么好思路,请问要怎么写这式子,谢谢!
在 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 等)来存储结果。
希望这可以帮助到你。如果你有其他问题,请随时提问。
谢谢,我改成这样可以了
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];
}
因为processStepByte存储的是byte,处理完后变成int了,转成byte再存储就好了
超出范围?
byte的取值范围是0~255,所以你要先搞明白你的需求是什么,而不是盲目*10
我需求是用databyte3[1]、databyte3[0] 两个字节储存0-1800内的数。但byte取值范围是0~255,我应该怎样转换存进去?
我输了个999 后,发现databyte3[0]=231 、databyte3[1]=3 这两个数跟999相等?
@tea2007: 存0~1800范围内的数,就不要用byte了,用short