| | |
| | | package com.zy.asrs.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; |
| | | } |
| | | |
| | | } |
| | | package com.zy.asrs.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;
|
| | | }
|
| | |
|
| | | }
|