我花了一周的时间,最后想出了如何将来自大型机的打包数据转换为十六进制数字表示。现在,我试图找出如何在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等功能,但是他们被这种格式搞得吓坏了。
谢谢!