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

📄 util.java

📁 Java version of ABC/HR comparator v0.5. by schnofler. Runs on Sun JRE 1.5 or later
💻 JAVA
字号:
package abchr.crypto;

public class Util {
	public static char[] bytesToChars(byte[] a,boolean bigEndian) {
		char[] result=new char[a.length/2];
		if(bigEndian) {
			for(int i=0;i<result.length;i++) {
				result[i]=(char)((a[i*2]<<8 & 0xFF00)+(a[i*2+1] & 0x00FF));
			}
		} else {
			for(int i=0;i<result.length;i++) {
				result[i]=(char)((char)((a[i*2+1]<<8 & 0xFF00)+(a[i*2] & 0x00FF))+32768);
			}
		}
		return result;
	}

	public static char[] bytesToChars(byte[] a,int offset,int length,boolean bigEndian) {
		char[] result=new char[length/2];
		if(bigEndian) {
			for(int i=0;i<result.length;i++) {
				result[i]=(char)((a[offset+i*2]<<8 & 0xFF00)+(a[offset+i*2+1] & 0x00FF));
			}
		} else {
			for(int i=0;i<result.length;i++) {
				result[i]=(char)((char)((a[offset+i*2+1]<<8 & 0xFF00)+(a[offset+i*2] & 0x00FF))+32768);
			}
		}
		return result;
	}

	public static byte[] charsToBytes(char[] a) {
		byte[] result=new byte[a.length*2];
		for(int i=0;i<a.length;i++) {
			result[2*i]=(byte)(a[i]>>8 & 0x00FF);
			result[2*i+1]=(byte)(a[i] & 0x00FF);
		}
		return result;
	}

	public static void intToByteArray(int i,byte[] b,int offset) {
		b[offset]=(byte)(i>>24);
		b[offset+1]=(byte)((i>>16)&0x000000FF);
		b[offset+2]=(byte)((i>>8)&0x000000FF);
		b[offset+3]=(byte)(i&0x000000FF);
	}

	public static int byteArrayToInt(byte[] b,int offset) {
		return ((b[offset]<<24) & 0xFF000000)+((b[offset+1]<<16) & 0x00FF0000)+((b[offset+2]<<8) & 0x0000FF00)+(b[offset+3] & 0x000000FF);
	}

	public static int[] bytesToInts(byte[] a) {
		int[] result=new int[a.length/4];
		for(int i=0;i<result.length;i++) {
			result[i]=((a[i*4]<<24) & 0xFF000000)+((a[i*4+1]<<16) & 0x00FF0000)+((a[i*4+2]<<8) & 0x0000FF00)+(a[i*4+3] & 0x000000FF);
		}
		return result;
	}

	public static byte[] stringToByteArray(String s) {
		byte[] a=new byte[s.length()*2];
		for(int i=0;i<s.length();i++) {
			a[2*i]=(byte)(s.charAt(i)>>8 & 0x000000FF);
			a[2*i+1]=(byte)(s.charAt(i) & 0x000000FF);
		}
		return a;
	}

	public static String byteArrayToString(byte[] a) {
		StringBuffer out=new StringBuffer(a.length*2+1);
		for(int i=0;i<a.length/2;i++) {
			out.append((char)((a[2*i]<<8 & 0xFF00)+(a[2*i+1] & 0x00FF)));
		}
		return out.toString();
	}

	public static byte[] intsToBytes(int[] a) {
		byte[] result=new byte[a.length*4];
		for(int i=0;i<a.length;i++) {
			result[4*i]=(byte)(a[i]>>24);
			result[4*i+1]=(byte)((a[i]>>16)&0x000000FF);
			result[4*i+2]=(byte)((a[i]>>8)&0x000000FF);
			result[4*i+3]=(byte)(a[i]&0x000000FF);
		}
		return result;
	}

	public static byte[] pad(byte[] data,int m) {
		byte[] result=new byte[8+data.length+((m-data.length%m)%m)];
		intToByteArray(data.length,result,0);
		System.arraycopy(data,0,result,8,data.length);
		return result;
	}

	public static byte[] unpad(byte[] bytes) throws IllegalArgumentException {
		int length=byteArrayToInt(bytes,0);
		if(length>1024*1024){throw new IllegalArgumentException("Invalid length");}
		/*System.out.println("length="+length);
		length=bytes.length-8;*/
		byte[] result=new byte[length];
		System.arraycopy(bytes,8,result,0,length);
		return result;
	}

	private Util(){}
}

⌨️ 快捷键说明

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