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. SAMBA配置文件详解

    全局参数: ==================Global Settings =================== [global] config file = /usr/local/samba/ ...

  2. 实验十四+杜娣+团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/p/11093584.html 这个作业的要求在哪里 https://www.cnblogs.c ...

  3. shell脚本中大于,大于等于,小于,小于等于、不等于的表示方法

    症状:shell中大于,大于等于,小于等于,lt,gt ,ne,ge,le 很对应. 应对方法: 大于 -gt (greater than) 小于 -lt (less than) 大于或等于 -ge ...

  4. mr-jobhistory-daemon.sh 查看mr的历史任务

    这个脚本的服务是实现web查看作业的历史运行情况.有些情况下,作业运行完了,在web端就无法查看运行情况. 可以通过开启这个的守护进程来达到查看历史任务. 启动命令为 mr-jobhistory-da ...

  5. 导入Excel——解析Excel——优化

    package com.it.excel.excelLearn; import java.io.FileInputStream; import java.io.IOException; import ...

  6. spring相关—AOP编程—切入点、连接点

    1 切入点表达式 1.1 作用 通过表达式的方式定位一个或多个具体的连接点. 1.2 语法细节 ①切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简单类名/全类名] [方 ...

  7. DiaryDayBayDayDiary

    Every day, an email reminder will be sent to you, along with a random copy of your previous diary. Y ...

  8. yugabyte与cockroachdb 的几个区别

    下图是来自官方文档  说明 今天打算尝试使用yugabyte做为hasura graphql-engine 的pg 引擎,发现比较完美,仔细看官方文档,原来yugabyte 底层实现直接是基于原生pg ...

  9. 关于windows10用c++部署libtorch过程中遇到的一些问题

    libtorch1.0 vs2017 CMake3.14 windows10 无cuda 用c++调用pytorch模型官网上面有详细教程,也有很多博客,可以参考以下链接:https://blog.c ...

  10. Spring中@Bean与@Configuration

    一.Spring中Bean及@Bean的理解[1] Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法: 一.Bean是啥 1.Java面向对象,对象有方 ...