package util;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import org.omg.IOP.Encoding;
import sun.misc.BASE64Encoder;
public class Test {
private static byte[] getBillJobId=new byte[20];
public static String byteArr2HexStr(byte[] arrB) throws Exception {
int iLen = arrB.length;
// 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍
StringBuffer sb = new StringBuffer(iLen * 2);
for (int i = 0; i < iLen; i++) {
int intTmp = arrB[i];
// 把负数转换为正数
while (intTmp < 0) {
intTmp = intTmp + 256;
}
// 小于0F的数需要在前面补0
if (intTmp < 16) {
sb.append("0");
}
sb.append(Integer.toString(intTmp, 16));
}
return sb.toString();
}
public static String bytesToHex(byte[] src){
if (src == null || src.length <= 0) {
return null;
}
StringBuilder stringBuilder = new StringBuilder("");
for (int i = 0; i < src.length; i++) {
// 之所以用byte和0xff相与,是因为int是32位,与0xff相与后就舍弃前面的24位,只保留后8位
String str = Integer.toHexString(src[i] & 0xff);
if (str.length() < 2) { // 不足两位要补0
stringBuilder.append(0);
}
stringBuilder.append(str);
}
return stringBuilder.toString();
}
public static String padRight(String s, int len) {
int count = len - s.length();
if (count > 0) {
StringBuffer str = new StringBuffer(len);
str.append(s);
for (int i = 0; i < count; i++) {
str.append(' ');
}
return str.toString();
} else {
return s;
}
}
public static ByteBuffer getByteBuffer(String str)
{
return ByteBuffer.wrap(str.getBytes());
}
public static String getString(ByteBuffer buffer)
{
Charset charset = null;
CharsetDecoder decoder = null;
CharBuffer charBuffer = null;
try
{
charset = Charset.forName("UTF-8");
decoder = charset.newDecoder();
// charBuffer = decoder.decode(buffer);//用这个的话,只能输出来一次结果,第二次显示为空
charBuffer = decoder.decode(buffer.asReadOnlyBuffer());
return charBuffer.toString();
}
catch (Exception ex)
{
ex.printStackTrace();
return "";
}
}
public static void main(String[] args) throws Exception {
String dd="abcdefghij";
char[] cs = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g' };
char[] a={'a','b'};
byte[] kl=TypeCase.charsToBytes(a);
char[]aa=TypeCase.bytesToChars(kl);
ByteBuffer ty=getByteBuffer(dd);
System.out.println(getString(ty));
for(int i=0;i<aa.length;i++){
System.out.println(aa[i]);
}
/* boolean bl=false;
byte kl=TypeCase.booleanToByte(bl);
System.out.println(TypeCase.byteToBoolean(kl));
*/
double qq=1232455.9;
long hh=9223372036854775807L;
byte []kk=TypeCase.longToBytes(hh);
//System.out.println(TypeCase.bytesToLong(kk));
long time0=System.currentTimeMillis();
for(int i=0;i<10000000;i++){
String str = padRight(dd, 20);
for (int j = 0; j < 20; j++) {
getBillJobId[j] = (byte) str.charAt(j);
}
}
long time1=System.currentTimeMillis();
System.out.println(time1-time0);
ByteBuffer buffer = ByteBuffer.allocate(10);
// getBillJobId=buffer.put(TypeCase.stringToS(dd)).array();
System.out.println(buffer.array().length);
System.out.println(TypeCase.bytesToString(buffer.array()));
long time2=System.currentTimeMillis();
for(int i=0;i<10000000;i++){
getBillJobId=TypeCase.stringTobytes(dd,20);
}
long time3=System.currentTimeMillis();
System.out.println(time3-time2);
System.out.println(new String(getBillJobId));
System.out.println(new String(getBillJobId));
//System.out.println((char)bufferT.array()[0]);
/* String books[] = new String[2];
books[0] = "Thinking in Java";
books[1] = "Effective Java";
System.out.println(books.toString());
long a=1234567891234569L;
long time0=System.currentTimeMillis();
for(int i=0;i<1000000;i++){
byte[] k=TypeCase.longToBytes(a);
System.out.println(k.length);
long f= TypeCase.bytesToLong(k);
System.out.println(f);
}
long time1=System.currentTimeMillis();
System.out.println(time1-time0);*/
}
}