package com.vincent.rsf.framework.common;
|
|
import java.io.UnsupportedEncodingException;
|
import java.nio.charset.Charset;
|
|
/**
|
* radix tools
|
* Created by vincent on 2018/10/6
|
*/
|
public class RadixTools {
|
|
public static void main(String[] args) {
|
String s = RadixTools.toBinaryString((byte) 1);
|
System.out.println(s);
|
for(int i=s.length()-1;i>=0;i--){
|
char c=s.charAt(i);
|
if (i == 7 && c =='1'){
|
System.out.println("===");
|
}
|
}
|
}
|
|
/************************************** BinaryString **********************************************/
|
|
public static String toBinaryString(byte b){
|
return Long.toBinaryString((b & 0xFF) + 0x100).substring(1);
|
}
|
|
public static String toBinaryString(byte[] bytes){
|
StringBuilder sb = new StringBuilder();
|
for (byte aByte : bytes) {
|
sb.append(Long.toBinaryString((aByte & 0xFF) + 0x100).substring(1));
|
}
|
return sb.toString();
|
}
|
|
/************************************** HexString **********************************************/
|
|
public static byte[] hexStringToBytes(String hexString) {
|
if (hexString == null || hexString.equals("")) {
|
return null;
|
}
|
hexString = hexString.toUpperCase();
|
int length = hexString.length() / 2;
|
char[] hexChars = hexString.toCharArray();
|
byte[] d = new byte[length];
|
for (int i = 0; i < length; i++) {
|
int pos = i * 2;
|
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
|
}
|
return d;
|
}
|
|
public static String bytesToHexStr(byte[] bytes){
|
StringBuilder buf = new StringBuilder(bytes.length * 2);
|
for(byte b : bytes) {
|
buf.append(String.format("%02x", b & 0xff));
|
}
|
|
return buf.toString();
|
}
|
|
private static byte charToByte(char c) {
|
return (byte) "0123456789ABCDEF".indexOf(c);
|
}
|
|
|
/************************************** String **********************************************/
|
|
public static String bytesToStr(byte[] bytes){
|
return bytesToStr(bytes, Charset.forName("gbk"));
|
}
|
|
public static String bytesToStr(byte[] bytes, Charset charset){
|
return new String(bytes, charset).trim().toUpperCase();
|
}
|
|
public static byte[] strToBytes(String str) throws UnsupportedEncodingException {
|
return str.getBytes("gbk");
|
}
|
|
/************************************** long **********************************************/
|
|
public static byte[] longToBytes(long number) {
|
long temp = number;
|
byte[] b = new byte[8];
|
for (int i = 0; i < b.length; i++) {
|
b[i] = new Long(temp & 0xff).byteValue();// 将最低位保存在最低位
|
temp = temp >> 8; // 向右移8位
|
}
|
return b;
|
}
|
|
public static long bytesToLong(byte[] bytes) {
|
long s = 0;
|
long s0 = bytes[0] & 0xff;// 最低位
|
long s1 = bytes[1] & 0xff;
|
long s2 = bytes[2] & 0xff;
|
long s3 = bytes[3] & 0xff;
|
long s4 = bytes[4] & 0xff;// 最低位
|
long s5 = bytes[5] & 0xff;
|
long s6 = bytes[6] & 0xff;
|
long s7 = bytes[7] & 0xff;
|
|
// s0不变
|
s1 <<= 8;
|
s2 <<= 16;
|
s3 <<= 24;
|
s4 <<= 8 * 4;
|
s5 <<= 8 * 5;
|
s6 <<= 8 * 6;
|
s7 <<= 8 * 7;
|
s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7;
|
return s;
|
}
|
|
|
/************************************** int **********************************************/
|
|
public static byte[] intToBytes(int n) {
|
byte[] b = new byte[4];
|
b[3] = (byte) (n & 0xff);
|
b[2] = (byte) (n >> 8 & 0xff);
|
b[1] = (byte) (n >> 16 & 0xff);
|
b[0] = (byte) (n >> 24 & 0xff);
|
return b;
|
}
|
|
|
public static int bytesToInt(byte[] b) {
|
int s = 0;
|
int s0 = b[0] & 0xff;// 最低位
|
int s1 = b[1] & 0xff;
|
int s2 = b[2] & 0xff;
|
int s3 = b[3] & 0xff;
|
s0 <<= 24;
|
s1 <<= 16;
|
s2 <<= 8;
|
s = s0 | s1 | s2 | s3;
|
return s;
|
}
|
|
/************************************** short **********************************************/
|
|
public static short byteToShort(byte[] b) {
|
short s = 0;
|
short s0 = (short) (b[1] & 0xff);// 最低位
|
short s1 = (short) (b[0] & 0xff);
|
s1 <<= 8;
|
s = (short) (s0 | s1);
|
return s;
|
}
|
|
public static byte[] shortToByte(short s){
|
byte[] b = new byte[2];
|
for(int i = 0; i < 2; i++){
|
int offset = 16 - (i+1)*8; //因为byte占4个字节,所以要计算偏移量
|
b[i] = (byte)((s >> offset)&0xff); //把16位分为2个8位进行分别存储
|
}
|
return b;
|
}
|
|
}
|