java bcd码转int_将BCD转换代码从Java迁移到.Net

这是一个类似的Question,它有几种不同的方式。

这是一个Site,它详细描述了您所面临的情况。

它不应该那么难,但将它们作为int处理会变得更加困难。

Zoned Decimal(BCD)很容易转换,但如果您从大型机中获取通过ASCII传输转换的文件,则必须小心。它仍然可以转换,但由于FTP期间的eccdic到ascii转换,字节值会发生变化。

如果处理二进制文件,则处理起来要容易得多。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace TestZoned

{

class Program

{

public static String zoneToString(byte[] zoneBytes)

{

Encoding ascii = Encoding.ASCII;

Encoding ebcdic = Encoding.GetEncoding("IBM037");

byte[] asciiBytes = null;

String str = null;

int zoneLen = zoneBytes.Length;

int i = zoneLen - 1;

int b1 = zoneBytes[i];

b1 = (b1 & 0xf0) >> 4;

switch (b1)

{

case 13:

case 11:

zoneBytes[i] = (byte)(zoneBytes[i] | 0xf0);

asciiBytes = Encoding.Convert(ebcdic, ascii, zoneBytes);

str = "-" + ASCIIEncoding.ASCII.GetString(asciiBytes);

break;

default:

zoneBytes[i] = (byte)(zoneBytes[i] | 0xf0);

asciiBytes = Encoding.Convert(ebcdic, ascii, zoneBytes);

str = ASCIIEncoding.ASCII.GetString(asciiBytes);

break;

}

return (str);

}

static void Main(string[] args)

{

byte[] array = { 0xf0, 0xf0, 0xf1 }; // 001

byte[] pos = { 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9 }; // 123456789

byte[] neg = { 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xd9 }; // -123456789

Console.WriteLine("Converted: {0}", zoneToString(array));

Console.WriteLine("Converted: {0}", zoneToString(pos));

Console.WriteLine("Converted: {0}", zoneToString(neg));

}

}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值