【发布时间】:2017-10-02 16:32:59
【问题描述】:
我正在从 C# 调用 as400 Rpg 程序。我向它传递了 6 个带值的参数和一个为空的第 7 个参数,并从程序中返回。我确实以字节的形式从程序中接收到一个值。根据程序的执行,返回的值应该是 1 或 0。
我试过用这个string result = System.Text.Encoding.UTF8.GetString(byteArray);
返回这个 � 符号。我尝试转换为返回 F1 的十六进制。如何在 C# 中获取该字节的值?我再次知道唯一可能的值是 1 或 0。
如果我使用 stringConverter.FromBytes(parameters["p7"].Value 我总是收到 1。
ProgramParameters parameters = new ProgramParameters();
parameters.Append("P1", cwbrcParameterTypeEnum.cwbrcInout, 3);
parameters["P1"].Value = stringConverter.ToBytes(uwDecision.Param1.PadRight(paramLength, ' '));
parameters.Append("P2", cwbrcParameterTypeEnum.cwbrcInput, 10);
parameters["P2"].Value = stringConverter.ToBytes(uwDecision.Param2.PadRight(parmlenth2, ' '));
parameters.Append("P3", cwbrcParameterTypeEnum.cwbrcInput, 10);
parameters["P3"].Value = stringConverter.ToBytes(uwDecision.Param3.ToUpper().PadRight(parmlenth2, ' '));
parameters.Append("P4", cwbrcParameterTypeEnum.cwbrcInput, 1);
parameters["P4"].Value = stringConverter.ToBytes(uwDecision.Param4.PadRight(paramlength3, ' '));
parameters.Append("P5", cwbrcParameterTypeEnum.cwbrcInput, 3);
parameters["P5"].Value = stringConverter.ToBytes(uwDecision.Param5.PadRight(paramLength, ' '));
parameters.Append("P6", cwbrcParameterTypeEnum.cwbrcInput, 3);
parameters["P6"].Value = stringConverter.ToBytes(uwDecision.Param6.PadRight(paramLength, ' '));
parameters.Append("P7", cwbrcParameterTypeEnum.cwbrcInout, 1);
program.Call(parameters);
var read = stringConverter.FromBytes(parameters["P7"].Value);
isValid = read == "1";
system.Disconnect(cwbcoServiceEnum.cwbcoServiceAll);
【问题讨论】:
-
您应该读取一个字节,然后将其转换为所需的数据类型,在这种情况下,它似乎是一个布尔值。我敢打赌你可以使用 BitConverter.ToBoolean(
). -
BitConverter.ToString(read) 返回 F1。它每次都返回 F1。
-
读了多长时间?
-
@RossBush 字节数组的大小总是相同的 241
-
@LeonardoTrimarchi 我想是康索拉斯吧!