2

我花了一周的大部分时间,终于弄清楚了如何将大型机中的打包数据转换为十六进制数字表示。现在,我试图弄清楚如何在 Visual C# 中将该十六进制字符串转换为整数。我确信这有一个简单的功能,但它目前绕过了我的搜索。这是给我大型机表示的代码:

// Get the packed decimal field from the input record
String testString = dataRecord.Substring(40, 4);
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(testString);
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding ebcdic = Encoding.GetEncoding("IBM037");
// Unpack Data
Byte[] bt = Encoding.Convert(ascii, ebcdic, bytes);
// Get the data into a string in the format of 00-5F (represents a positive 5)
// The format of 00-5D (represents a negative 5)
String numberString = BitConverter.ToString(bt);

如果主机十进制值为 5,则 bt[0] 最终为 00,bt[1] 最终为 5F。转换为字符串后,我最终得到“00-5F”。我真正想要的是一个只写“5”的整数或字符串。我可以编写自己的东西来测试每个数字,并返回正确的值,但我认为必须有一种方法可以将十六进制有符号数字转换为字符串或整数,而无需编写我自己的例程. 有谁知道这个功能可能是什么?我已经尝试过标准的 convert.toint、todecimal 等函数,但他们被这种格式吓坏了。

谢谢!

4

0 回答 0