Java基本类型与byte数组之间相互转换方法_java

Java基本类型与byte数组之间相互转换,刚刚写的

package cn.teaey.utils;

import java.nio.charset.Charset;

public class ByteUtil
{
  public static byte[] getBytes(short data)
  {
    byte[] bytes = new byte[2];
    bytes[0] = (byte) (data & 0xff);
    bytes[1] = (byte) ((data & 0xff00) >> 8);
    return bytes;
  }

  public static byte[] getBytes(char data)
  {
    byte[] bytes = new byte[2];
    bytes[0] = (byte) (data);
    bytes[1] = (byte) (data >> 8);
    return bytes;
  }

  public static byte[] getBytes(int data)
  {
    byte[] bytes = new byte[4];
    bytes[0] = (byte) (data & 0xff);
    bytes[1] = (byte) ((data & 0xff00) >> 8);
    bytes[2] = (byte) ((data & 0xff0000) >> 16);
    bytes[3] = (byte) ((data & 0xff000000) >> 24);
    return bytes;
  }

  public static byte[] getBytes(long data)
  {
    byte[] bytes = new byte[8];
    bytes[0] = (byte) (data & 0xff);
    bytes[1] = (byte) ((data >> 8) & 0xff);
    bytes[2] = (byte) ((data >> 16) & 0xff);
    bytes[3] = (byte) ((data >> 24) & 0xff);
    bytes[4] = (byte) ((data >> 32) & 0xff);
    bytes[5] = (byte) ((data >> 40) & 0xff);
    bytes[6] = (byte) ((data >> 48) & 0xff);
    bytes[7] = (byte) ((data >> 56) & 0xff);
    return bytes;
  }

  public static byte[] getBytes(float data)
  {
    int intBits = Float.floatToIntBits(data);
    return getBytes(intBits);
  }

  public static byte[] getBytes(double data)
  {
    long intBits = Double.doubleToLongBits(data);
    return getBytes(intBits);
  }

  public static byte[] getBytes(String data, String charsetName)
  {
    Charset charset = Charset.forName(charsetName);
    return data.getBytes(charset);
  }

  public static byte[] getBytes(String data)
  {
    return getBytes(data, "GBK");
  }

  public static short getShort(byte[] bytes)
  {
    return (short) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
  }

  public static char getChar(byte[] bytes)
  {
    return (char) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
  }

  public static int getInt(byte[] bytes)
  {
    return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24));
  }

  public static long getLong(byte[] bytes)
  {
    return(0xffL & (long)bytes[0]) | (0xff00L & ((long)bytes[1] << 8)) | (0xff0000L & ((long)bytes[2] << 16)) | (0xff000000L & ((long)bytes[3] << 24))
     | (0xff00000000L & ((long)bytes[4] << 32)) | (0xff0000000000L & ((long)bytes[5] << 40)) | (0xff000000000000L & ((long)bytes[6] << 48)) | (0xff00000000000000L & ((long)bytes[7] << 56));
  }

  public static float getFloat(byte[] bytes)
  {
    return Float.intBitsToFloat(getInt(bytes));
  }

  public static double getDouble(byte[] bytes)
  {
    long l = getLong(bytes);
    System.out.println(l);
    return Double.longBitsToDouble(l);
  }

  public static String getString(byte[] bytes, String charsetName)
  {
    return new String(bytes, Charset.forName(charsetName));
  }

  public static String getString(byte[] bytes)
  {
    return getString(bytes, "GBK");
  }

  public static void main(String[] args)
  {
    short s = 122;
    int i = 122;
    long l = 1222222;

    char c = 'a';

    float f = 122.22f;
    double d = 122.22;

    String string = "我是好孩子";
    System.out.println(s);
    System.out.println(i);
    System.out.println(l);
    System.out.println(c);
    System.out.println(f);
    System.out.println(d);
    System.out.println(string);

    System.out.println("**************");

    System.out.println(getShort(getBytes(s)));
    System.out.println(getInt(getBytes(i)));
    System.out.println(getLong(getBytes(l)));
    System.out.println(getChar(getBytes(c)));
    System.out.println(getFloat(getBytes(f)));
    System.out.println(getDouble(getBytes(d)));
    System.out.println(getString(getBytes(string)));
  }

}

以上这篇Java基本类型与byte数组之间相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
基本类型数组
java 基本类型数组、byte string 相互转换、bitmap转byte数组、byte类型、c byte类型,以便于您获取更多的相关知识。

时间: 2024-10-03 03:24:55

Java基本类型与byte数组之间相互转换方法_java的相关文章

Java中字符串与byte数组之间的相互转换_java

前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 原理 我们都知道,在Java里byte类型是占用1个字节,即8位的,而16进制的字符占用4位,所以每个byte可以用两个字符来表示,反之亦然. 举个例子 byte = 123 用二进制表示:0111 1011 每4位用字符表示: 7 b 是的,原理就这么简单,接下来用代码实现: byte[] 转1

跪求C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?

问题描述 请教C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?在C#定义类似如下的结构和类:[Serializable][StructLayout(LayoutKind.Sequential,Pack=1)]publicstructSTCord{publicdoublex;//publicdoubley;publicbytetype;publicintnum;};[Serializable][StructLayout(LayoutKind.Sequential,P

全面了解java byte数组与文件读写_java

全面了解java byte数组与文件读写 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileHelper { <span style="white-space:pre"> </span

浅谈java的byte数组的不同写法_java

(由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是"byte",即每一个byte都可以用二进制.十六进制.十进制来表示. 二进制:00010110----->0*2^8 + 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 22 16进制: 0x16 -----

请教C#与VC6之间利用UDP/TCP进行数据传输时,如何实现BYTE数组与自定义数据结构或类的相互转换?

问题描述 请教C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?在C#定义类似如下的结构和类:[Serializable][StructLayout(LayoutKind.Sequential,Pack=1)]publicstructSTCord{publicdoublex;//publicdoubley;publicbytetype;publicintnum;};[Serializable][StructLayout(LayoutKind.Sequential,P

Java 类型相互转换byte[]类型,Blob类型详细介绍_java

在我们的程序开发当中,经常会用到java.sql.Blob.byte[].InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util. 一.byte[]=>Blob 我们可以通过Hibernate提供的表态方法来实现如: org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]); 二.Blob=>byte[] 目前没有找到好一点的API提供,所以

java数组-Java合并两个升序数组

问题描述 Java合并两个升序数组 假如ab是两个已排好序的升序数组,将数组b合并到a中,使a成为一个升序数组(这里假设a的长度大于等于a和b的元素个数之和) 解决方案 b的元素合并到a中,很可能涉及a中元素的移位,移位对于数组来说效率较低,所以建议把a和b的元素先合并到c中,然后再把c的地址赋给a:那么a.b合并的代码如下:(假设a.b是int型的数组,如果是其他类型的数组要稍稍修改程序才能用,主要是修改数组类型定义和判断数组元素大小的地方) public int [] combine(int

java中进制的转换,Byte与16进制的转换方法_java

java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int i) 十进制转成二进制  String Integer.toBinaryString(int i) 十六进制转成十进制 Inte

基于java中byte数组与int类型的转换(两种方法)_java

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf