数字类型转换
在对APDU进行十进制、十六进制、字节、字符串转换时用到下列方法:
package com.example.android.BluetoothChat;public class Convertor { /* 给APDU添加前缀和后缀 */ public static String m_encode_apdu(String apdu) { int len = apdu.length() / 2; String lenHex = m_convert_int_to_hex_string(len); return "02" + "00" + lenHex + "80" + "FFFFFFFF" + apdu + "01" + "03"; } /* 十进制数值转换为十六进制字符串 */ public static String m_convert_int_to_hex_string(int d){ String hex = Integer.toHexString(d); if (hex.length() == 1) { hex = '0' + hex; } return hex.toUpperCase(); } /* 字节数值转换为十六进制字符串 */ public static String m_convert_byte_to_hex_string(byte b){ String hex = Integer.toHexString(b & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } return hex.toUpperCase(); } /* 字节数组转换为十六进制字符串 */public static String m_convert_byte_array_to_hex_string(byte[] ba) {String hex = "";for (int i = 0; i < ba.length; i++) {hex += m_convert_byte_to_hex_string(ba[i]);}return hex;} /* 整形数值转换为长度为4的字节数组 */ public static byte[] m_convert_int_to_byte_array(int d) { byte[] ba = new byte[4]; for (int i = 0; i < 4; i++) { ba[i] = (byte)(d >> 8 * (3 - i) & 0xFF); } return ba; } /* 整形数值转换为十六进制字符串 */ public static String m_convert_int_to_byte_hex_String(int d){ byte[] ba = m_convert_int_to_byte_array(d); String hexString = m_convert_byte_array_to_hex_string(ba); return hexString; }}
?