| | |
| | | return result; |
| | | } |
| | | |
| | | //姝e父鐨勫瓧姣嶆暟瀛楀彉鎴愬瓧鑺傛暟鍙戦?佺粰鐩掑瓙 |
| | | //正常的字母数字变成字节数发�?�给盒子 |
| | | public static String asciiToHex(String str) { |
| | | char[] chars = str.toCharArray(); |
| | | |
| | |
| | | |
| | | return result.toString(); |
| | | }//12300 //00321 |
| | | //浜岃繘鍒惰浆鍗佽繘鍒? |
| | | //二进制转十进�? |
| | | public static int int2ToHex(String number) { |
| | | return Integer.parseInt(number, 2); |
| | | } |
| | | //浜岃繘鍒惰浆16杩涘埗 4浣? |
| | | //二进制转16进制 4�? |
| | | public static String intBinaryTo16(String number) { |
| | | int num=int2ToHex(number); |
| | | return intTo2ByteHex(num); |
| | |
| | | public static int int16ToHex(String number) { |
| | | return Integer.parseInt(number, 16); |
| | | } |
| | | //鍗佽繘鍒惰浆浜岃繘鍒? |
| | | //十进制转二进�? |
| | | public static String intToBinary(int number) { |
| | | return Integer.toBinaryString(number); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗘暣鏁拌浆鎹负2浣?16杩涘埗锛屽1杞崲涓?01锛?10杞崲涓?0a |
| | | * 将整数转换为2�?16进制,如1转换�?01�?10转换�?0a |
| | | * |
| | | * @param number |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗘暣鏁拌浆鎹负4浣?16杩涘埗锛屽1杞崲涓?0001锛?10杞崲涓?000a |
| | | * 将整数转换为4�?16进制,如1转换�?0001�?10转换�?000a |
| | | * |
| | | * @param number |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗘暣鏁拌浆鎹负8浣?16杩涘埗锛屽1杞崲涓?00000001锛?10杞崲涓?0000000a |
| | | * 将整数转换为8�?16进制,如1转换�?00000001�?10转换�?0000000a |
| | | * |
| | | * @param number |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗘椂闂磋浆鎹负16杩涘埗鏍煎紡锛屽勾锛?2瀛楄妭锛? + 鏈堬紙1瀛楄妭锛? + 鏃ワ紙1瀛楄妭锛? + 鏃讹紙1瀛楄妭锛? + 鍒嗭紙1瀛楄妭锛? + 绉掞紙1瀛楄妭锛? |
| | | * 将时间转换为16进制格式,年�?2字节�? + 月(1字节�? + 日(1字节�? + 时(1字节�? + 分(1字节�? + 秒(1字节�? |
| | | * |
| | | * @param time |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏?16杩涘埗鐨勬椂闂磋浆鎹负yyyy-MM-dd HH:mm:ss鐨勬牸寮? |
| | | * �?16进制的时间转换为yyyy-MM-dd HH:mm:ss的格�? |
| | | * |
| | | * @param hexTime |
| | | * @return |
| | |
| | | |
| | | return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; |
| | | } |
| | | //鍗佸叚杩涘埗杞?10杩涘埗 |
| | | //十六进制�?10进制 |
| | | public static int hexToInt(String hex) { |
| | | return Integer.parseInt(hex, 16); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗗瓧鑺傝浆鎹负涓や綅鍗佸叚杩涘埗瀛楃涓诧紝涓嶅浣嶅墠鍔?0 |
| | | * 将字节转换为两位十六进制字符串,不够位前�?0 |
| | | * |
| | | * @param b |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗? |
| | | * 将十六进制字符,转换成二进制的字�? |
| | | * |
| | | * @param b |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗? |
| | | * 将十六进制字符,转换成二进制的字�? |
| | | * |
| | | * @param b |
| | | * @return |
| | |
| | | |
| | | |
| | | /** |
| | | * 鍗佽繘鍒跺瓧鑺傛暟缁勮浆鍗佸叚杩涘埗瀛楃涓? |
| | | * 十进制字节数组转十六进制字符�? |
| | | * @param bufSize |
| | | * @param msg |
| | | * @return |
| | |
| | | // System.out.println(HexUtil.hexToInt("00d2")); |
| | | // |
| | | // System.out.println(HexUtil.formatHex("3c5354413e")); |
| | | String message = "Hello World!|This is the first signal from device!"; |
| | | int length = message.length() * 2 + 10; // 闀垮害鍖呮嫭缁撳熬鐨?<EOF>锛屼竴涓瓧绗﹀湪淇″彿涓敱涓や釜瀛楄妭琛ㄧず銆? |
| | | |
| | | String command = HexUtil.asciiToHex("<STA>"); // 娣诲姞寮?濮嬫爣璇? |
| | | |
| | | String message = "Hello World!|This is the first signal from device!"; |
| | | int length = message.length() * 2 + 10; // 长度包括结尾�?<EOF>,一个字符在信号中由两个字节表示�? |
| | | |
| | | String command = HexUtil.asciiToHex("<STA>"); // 添加�?始标�? |
| | | |
| | | command += (String.format("%4s", HexUtil.intToHex(length)).replace(' ', '0')); // 添加长度标识 |
| | | command += "01"; // 娣诲姞璁惧绫诲瀷 0x01琛ㄧず鍒囧壊鏈猴紝0x02琛ㄧず閽㈠寲鐐? |
| | | command += "0001"; // 娣诲姞璁惧鍨嬪彿锛?0x0001琛ㄧず鍩烘湰娆撅紝0x0002琛ㄧず涓骇娆? |
| | | command += "01"; // 添加设备类型 0x01表示切割机,0x02表示钢化�? |
| | | command += "0001"; // 添加设备型号�?0x0001表示基本款,0x0002表示中级�? |
| | | command += "0000"; // 功能号,0x0000是下位机主动发给上位机;0x0001是上位机修改下位机RTC |
| | | command += "00"; // 鍔犲瘑鏂瑰紡锛?0x00琛ㄧず涓嶅姞瀵? |
| | | command += "00"; // 加密方式�?0x00表示不加�? |
| | | |
| | | Calendar c = Calendar.getInstance(); |
| | | |