⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utils.java

📁 rfid读写器及相关dll(java c++源码)
💻 JAVA
字号:
package com.sensevision.reader;
public class Utils {
	public static String getStrCRC16C(char[] str){
		int current_crc_value=cRC16C(str);
		return Integer.toHexString(current_crc_value).toUpperCase();
	}
	public static int cRC16C(char[] str){
		 final  int POLYNOMIAL = 0x8408; // x^16 + x^12 + x^5 + 1

		  final int PRESET_VALUE = 0xFFFF;

		  //final int CHECK_VALUE = 0xF0B8;
	int current_crc_value = PRESET_VALUE;
	for (int i = 0; i < str.length; i++) {
		current_crc_value = current_crc_value ^ (int) str[i];
		for (int j = 0; j < 8; j++) {
			if ((current_crc_value & 0x0001)  != 0) {
				current_crc_value = (current_crc_value >>> 1) ^ POLYNOMIAL;
			} else {
				current_crc_value = (current_crc_value >>>1);
			}
		}
	}
	return current_crc_value;
	}
	public static String toUnicode(String str){
		byte[] values=str.getBytes();
		StringBuffer newValue=new StringBuffer();
		for(int i=0;i<values.length;i++){
			String value=Integer.toHexString(values[i]).toUpperCase();
			if(value.length()==1){
				newValue.append("0");
			}
			newValue.append(value);
		}
		return newValue.toString();
	}

	public static void main(String[] args) {
		Utils CRC16 = new Utils();
//
//		byte data1[] = { 0x01 ,0x02,0x03,0x04};
//		byte data2[] = { 0x02 };
		//int check = CRC16.getCRC16(data2);
		//int check = CRC16.getdCRC16(toUnicode("0001002056").getBytes());
		//int data1[] = { 0x31 ,0x32,0x33};
		char data1[]={0x01, 0x00, 0x0A ,0x00 ,0x00 ,0x00 ,0x39, 0xB2 ,0x32 ,0x01 ,0x00 ,0x40 ,0x05 ,0xE0};
		//byte data1[] = { 0,2 ,0,1,0,2,0,0,0,7,0,0};
//		int data1[] = { 0x00,0x00,0x0A,0x00,0x00,0x00,0x39,0xB2,0x32,0x01,0x00,0x40,0x05,0xE0};
		//00000A00000039B23201004005E0
//		int data1[] = { 0x05,00,0x0A,0x00,0x00,0x00,0x39,0xB2,0x32,0x01,0x00,0x40,0x05,0xE0};//,0xF4,0xAE};
		//int check = CRC16.getCRC16(data1);
		//int check = CRC16.getCRC16("00".getBytes());
		//System.out.println("HEX:\t" + Integer.toHexString(check).toUpperCase());
		System.out.println("HEX:\t" +getStrCRC16C(toUniteStr("00000A00000039B23201004005E0",2).toCharArray()));
		System.out.println(toBack("12345678",2));
		System.out.println(cRC16C(data1));
//		String s=toUnicode("26");
//		System.out.println(s);
	}
	
 
    
   public static String toBack (String s,int charNum){
	   if(s.length()<=charNum){
		   return s;
	   }
	   return s.substring(s.length()-charNum,s.length())+toBack(s.substring(0,s.length()-charNum),charNum);
   }
   
   /**
    * 将从s每charNum个字符合成一个字符,生成一个新串
    * @param s 将要处理的字符串
    * @param charNum 合并取的字符数:例如果s='1234' charNum=2 就是将12,34分别合并生成一个字符,长度为2
    * @return
    */
   public static String toUniteStr(String s,int charNum){
	   if(s.length()<=charNum){
		   return String.valueOf((char)Integer.parseInt(s,16));
	   }
	    char value=(char)Integer.parseInt(s.substring(s.length()-charNum,s.length()),16);
	   return toUniteStr(s.substring(0,s.length()-charNum),charNum)+value;
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -