【问题标题】:ISO 8583 library in c#C# 中的 ISO 8583 库
【发布时间】:2018-09-03 04:44:01
【问题描述】:

我现在正在使用我们正在使用的支付网关 .ISO 8583 消息传递系统。我面临着一些我在下面描述的问题: 我的二进制数据是:

0111101010111010000001000000000100001110111000001100000000000000 

我需要将其转换为十六进制值(8 字节):

7A BA 04 01 0E E0 C0 00 

然后我需要以 16 个 EBCDIC 字符(十六进制)传输:

F7 C1 C2 C1 F0 F4 F0 F1 F0 C5 C5 F0 C3 F0 F0F0

然后我需要传输为 16 个 ASCII 字符(十六进制):

37 41 42 41 30 34 30 31 30 45 45 30 43 30 30 30

我的问题是如何转换这个二进制数据 EBCDIC 字符和 ASCII 字符。如果有人帮助我,这是非常需要的

【问题讨论】:

  • 查看 MSDN 上的 System.Encoding 类内容。

标签: c# iso8583


【解决方案1】:

this function的帮助下: 您可以先将字节数组转换为十六进制字符串,然后将其转换为 EBCDIC 编码,最后您可以再次获取字符的十六进制字节码:

    var hexdata = new[] { 0x7A, 0xBA, 0x04, 0x01, 0x0E, 0xE0, 0xC0, 0x00 };    
    var asciiString = string.Join("", hexdata.Select(num => num.ToString("X2")));
    var asciiBytes = asciiString.Select(ch => (byte)ch).ToArray(); // It is safe, as we cannot have any unicode characters here

    var ebcdicData = ConvertAsciiToEbcdic(asciiBytes);

    var ebcdicString = string.Join(" ", ebcdicData.Select(ch => ((byte)ch).ToString("X2")));    
    var asciiHexString = string.Join(" ", asciiBytes.Select(ch => ((byte)ch).ToString("X2")));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 2020-11-29
    • 2019-05-13
    • 2015-05-04
    • 2012-04-25
    • 2015-01-30
    • 2022-06-20
    相关资源
    最近更新 更多