import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.UnsupportedEncodingException;

import java.nio.ByteBuffer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class ByteUtil

{

private static final Logger LOGGER = LoggerFactory.getLogger(ByteUtil.class);

public static String getString(ByteBuffer byteBuffer)

{

short len = byteBuffer.getShort();

byte[] bb = new byte[len];

byteBuffer.get(bb);

String str = null;

try {

str = new String(bb, "UTF-8");

} catch (UnsupportedEncodingException e) {

LOGGER.error("读取字符串错误.");

}

return str;

}

public static byte[] mergeByteArray(byte[] bb1, byte[] bb2)

{

int len1 = bb1.length;

int len2 = bb2.length;

byte[] bb = new byte[len1 + len2];

System.arraycopy(bb1, 0, bb, 0, len1);

System.arraycopy(bb2, 0, bb, len1, len2);

return bb;

}

public static byte[] booleanToBytes(boolean b)

{

byte[] bb = new byte[1];

bb[0] = (byte)((b) ? 1 : 0);

return bb;

}

public static byte[] byteToBytes(byte b)

{

byte[] bb = new byte[1];

bb[0] = b;

return bb;

}

public static byte[] shortToBytes(short s)

{

ByteBuffer byteBuffer = ByteBuffer.allocate(2);

byteBuffer.putShort(s);

byteBuffer.flip();

byte[] bb = new byte[byteBuffer.limit()];

byteBuffer.get(bb);

return bb;

}

public static byte[] intToBytes(int i)

{

ByteBuffer byteBuffer = ByteBuffer.allocate(4);

byteBuffer.putInt(i);

byteBuffer.flip();

byte[] bb = new byte[byteBuffer.limit()];

byteBuffer.get(bb);

return bb;

}

public static byte[] longToBytes(long l)

{

ByteBuffer byteBuffer = ByteBuffer.allocate(8);

byteBuffer.putLong(l);

byteBuffer.flip();

byte[] bb = new byte[byteBuffer.limit()];

byteBuffer.get(bb);

return bb;

}

public static byte[] stringToBytes(String s)

{

byte[] bb = null;

try {

bb = s.getBytes("UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return bb;

}

public static <T> T byteArrayToObject(byte[] bb)

{

Object obj = null;

ByteArrayInputStream bais = null;

ObjectInputStream ois = null;

try {

bais = new ByteArrayInputStream(bb);

ois = new ObjectInputStream(bais);

obj = ois.readObject();

} catch (Exception e) {

e.printStackTrace(); } finally {

try {

if (ois != null) ois.close();  } catch (IOException e) {

e.printStackTrace();

}try { if (bais != null) bais.close();  } catch (IOException e) {

e.printStackTrace();

}

}

return obj;

}

public static byte[] objectToByteArray(Object obj)

{

byte[] bb = null;

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ObjectOutputStream oos = null;

try {

oos = new ObjectOutputStream(baos);

oos.writeObject(obj);

bb = baos.toByteArray();

} catch (Exception e) {

e.printStackTrace(); } finally {

try {

if (oos != null) oos.close();  } catch (IOException e) {

e.printStackTrace();

}try { if (baos != null) baos.close();  } catch (IOException e) {

e.printStackTrace();

}

}

return bb;

}

}

ByteUtil的更多相关文章

  1. ByteUtil 工具类

    ByteUtil 工具类 import java.io.FileOutputStream; import java.io.OutputStream; import java.nio.charset.C ...

  2. MyCat源码分析系列之——结果合并

    更多MyCat源码分析,请戳MyCat源码分析系列 结果合并 在SQL下发流程和前后端验证流程中介绍过,通过用户验证的后端连接绑定的NIOHandler是MySQLConnectionHandler实 ...

  3. NPOI、MyXls、Aspose.Cells 导入导出Excel(转)

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...

  4. byte数据的常用操作函数[转发]

    /// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...

  5. csharp: Export or Import excel using MyXls,Spire.Xls

    excel 2003 (效果不太理想) using System; using System.Collections.Generic; using System.ComponentModel; usi ...

  6. [转].net 使用NPOI或MyXls把DataTable导出到Excel

    本文转自:http://www.cnblogs.com/yongfa365/archive/2010/05/10/NPOI-MyXls-DataTable-To-Excel-From-Excel.ht ...

  7. Java字节转换类实现

    Java的类库支持完全不如C#,比如时间类,比如数据类型转换类等等,难道是我自己没找到吗? 下面是字节转换类,byte[]与short, int, long, float, double, Strin ...

  8. [转载] java中byte数组与int,long,short间的转换

    文章转载自http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * ...

  9. 【转】java中float与byte[]的互转 -- 不错

    原文网址:http://tjmljw.iteye.com/blog/1767716 起因:想把一个float[]转换成内存数据,查了一下,下面两个方法可以将float转成byte[]. 方法一 imp ...

随机推荐

  1. java获取一个时间段内的时间天数

    package com.hzcominfo.hik.hikbigscreen.core; import java.text.SimpleDateFormat; import java.util.Arr ...

  2. Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

    Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep ...

  3. 201671010417 金振兴 实验十四 团队项目评审&课程学习总结

    项目 内容 软件工程 https://www.cnblogs.com/nwnu-daizh/ 作业要求 https://www.cnblogs.com/sunmiaokun/p/11095027.ht ...

  4. cmds在线重定义增加列

    --输出信息采用缩排或换行格式化 EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'PRETTY', T ...

  5. spi调试步骤,mcp2515调试整理

    1.先查看也硬件电路,一般都是单片机作为master,其他芯片作为slave.单片机的MOSI对应从机的SI,单片机的MISO对应从机的SO,如果两个引脚接反了,那是怎么调试都没有效果的. 2.单片机 ...

  6. UI系统综述:iOS的图形绘制、动画与runloop

    一.一条业务pipeline: 一个连接核心:coreanimation 二.两个进程: 1.app进程: 2.render进程: 首先,由 app 处理事件(Handle Events),如:用户的 ...

  7. day005-python基础数据类型之课后作业讲解

    1.元素的分类 需求:有如下集合[11,22,33,44,55,66,77,88,99,90……],将所有大于66的值保存在字典的第一个key中,将小于66的值保存在第二个key的值中 代码实现: # ...

  8. 17-Flutter移动电商实战-首页_楼层区域的编写

    1.楼层标题组件 该组件非常简单,只接收一个图片地址,然后显示即可: class FloorTitle extends StatelessWidget {  final String picture_ ...

  9. WinDbg常用命令系列---!uniqstack

    简介 这个!uniqstack扩展扩展显示的所有线程的堆栈的所有当前进程,不包括显示为具有重复项的堆栈中. 使用形式 !uniqstack [ -b | -v | -p ] [ -n ] 参数 -b将 ...

  10. [Java] key

    Z2VueW1vJTIwJTI2JTI2JTI2JTIwMTYzJTNBJTBBdXNyJTIwLSUyMHd1a29uZ3N1bjEyMzQlMjAlMjMlMjAxNjMuc3VmZml4JTIw ...