如何将两个字节的BCD码转换成十进制,例如:35 26 变成十进制是 263.5 能给我一个计算公式吗,谢谢

解决方案 »

  1.   

    刚一看还不知道BCD是什么码...baidu下原来在中国大陆称之为8421码  杯具...
      

  2.   

    // 字节顺序LZ自己搞定, 后面是几位小数,在适当的位置上插入小数点。
    public class Test1{
    public static long BCDtoInt(String s ) {
    long sum = 0;
    for(int i=0,len=s.length(); i<len; i++ ) {
    int a = s.codePointAt(i)-0x30;
    sum = sum * 10+a;
    }
    return sum;
    }
        public static void main(String[] args){
    System.out.println(BCDtoInt("2635"));
        }
    }
      

  3.   

    2楼的先谢了,可是这个似乎不通用,换个数字就不对了,而且不是String类型的是byte[]型的
      

  4.   

    public class Test1{
    public static long BCDtoInt(String s ) {
    long sum = 0;
    for(int i=0,len=s.length(); i<len; i++ ) {
    int a = s.codePointAt(i)-0x30;
    sum = sum * 10+a;
    }
    return sum;
    }
    public static long ByteBCDtoInt(byte[] a ) {
    long sum = 0;
    int b;
    for(int i=0,len=a.length;i<len;i++) {
    b = new Byte(a[i]).intValue();
    int n = (b & 0xf0)>>4,
    m = b & 0x0f;
    sum = sum*10+n;
    sum = sum*10+m;
    }
    return sum;
    }
        public static void main(String[] args){
    System.out.println(BCDtoInt("2635"));
    byte[] t={0x26,0x35};
    System.out.println(ByteBCDtoInt(t));
        }
    }
      

  5.   


    也可以先转换一下
    public class Test1{
    public static long BCDtoInt(String s ) {
    long sum = 0;
    for(int i=0,len=s.length(); i<len; i++ ) {
    int a = s.codePointAt(i)-0x30;
    sum = sum * 10+a;
    }
    return sum;
    }
    public static String ByteToHexString(byte[] a ) {
    String s="";
    for(int i=0,len=a.length;i<len;i++) {
    s += Integer.toHexString(new Byte(a[i]).intValue());
    }
    return s;
    }
        public static void main(String[] args){
    System.out.println(BCDtoInt("2635"));
    byte[] t={0x26,0x35};
    System.out.println(BCDtoInt(ByteToHexString(t)));
        }
    }