java ASCII码转BCD码 BCD码转字符串

  • Post author:
  • Post category:java




  1. <pre


    class


    =


    “java”


    name=


    “code”


    >


    public




    static




    void


    main(String[] args)


    throws


    IOException {



  2. // TODO Auto-generated method stub




  3. String s =

    “AD6DEC74E223517170487C238A7527B0DD0CA1C684FC13F666473E7C08323F9F66473E7C08323F9F66473E7C08323F9F66473E7C08323F9F66473E7 C08323F9F66473E7C08323F9F0000000000000000”


    ;



  4. byte


    [] bcd = ASCII_To_BCD(s.getBytes(), s.length());


  5. String s1 = bcd2Str(bcd);


  6. }



  7. private




    static




    byte


    asc_to_bcd(


    byte


    asc) {



  8. byte


    bcd;




  9. if


    ((asc >=


    ‘0’


    ) && (asc <=


    ‘9’


    ))


  10. bcd = (

    byte


    ) (asc –


    ‘0’


    );



  11. else




    if


    ((asc >=


    ‘A’


    ) && (asc <=


    ‘F’


    ))


  12. bcd = (

    byte


    ) (asc –


    ‘A’


    +


    10


    );



  13. else




    if


    ((asc >=


    ‘a’


    ) && (asc <=


    ‘f’


    ))


  14. bcd = (

    byte


    ) (asc –


    ‘a’


    +


    10


    );



  15. else




  16. bcd = (

    byte


    ) (asc –


    48


    );



  17. return


    bcd;


  18. }



  19. private




    static




    byte


    [] ASCII_To_BCD(


    byte


    [] ascii,


    int


    asc_len) {



  20. byte


    [] bcd =


    new




    byte


    [asc_len /


    2


    ];



  21. int


    j =


    0


    ;



  22. for


    (


    int


    i =


    0


    ; i < (asc_len +


    1


    ) /


    2


    ; i++) {


  23. bcd[i] = asc_to_bcd(ascii[j++]);

  24. bcd[i] = (

    byte


    ) (((j >= asc_len) ?


    0x00


    : asc_to_bcd(ascii[j++])) + (bcd[i] <<


    4


    ));


  25. }


  26. return


    bcd;


  27. }



  28. public




    static


    String bcd2Str(


    byte


    [] bytes) {



  29. char


    temp[] =


    new




    char


    [bytes.length *


    2


    ], val;




  30. for


    (


    int


    i =


    0


    ; i < bytes.length; i++) {


  31. val = (

    char


    ) (((bytes[i] &


    0xf0


    ) >>


    4


    ) &


    0x0f


    );


  32. temp[i *

    2


    ] = (


    char


    ) (val >


    9


    ? val +


    ‘A’





    10


    : val +


    ‘0’


    );



  33. val = (

    char


    ) (bytes[i] &


    0x0f


    );


  34. temp[i *

    2


    +


    1


    ] = (


    char


    ) (val >


    9


    ? val +


    ‘A’





    10


    : val +


    ‘0’


    );


  35. }


  36. return




    new


    String(temp);


  37. }</pre><br>

  38. <pre></pre>

  39. <pre></pre>