`

byte构造数据总结

阅读更多

1  java基本类型说明
    1、byte            8位
    2、short          16位
    3、int              32位
    4、double       64位
    在java中一个byte称为一个字节,所以一个short需要用2个byte来构造,一个int需要4个byte来构造,一个double需要8个byte来构造,一个中文类型的字符占2个byte。

 

2  byte类型学习笔记
    1、用byte[]构造字符串的时候byte by[] = {0}表示空格
         用byte by[] = {0},构造字符串时表示一个空格,byte by[] = {0,0}表示两个空格......
         byte by[] = {0};
         String str = "fsd" + new String(by)+"sfasfsda";
         str = "fsd sfasfsda";

 

3  代码演示

package com;

public class ByteUtil {
	/**
	 * 用byte构造int数据,低位
	 * 一个byte(字节)占8位,一个int数据占32位,一个int类型的数据占4个字节,需要4个byte数据类接收
	 */
	public static int byteToInt(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;

		s3 <<= 24;
		s2 <<= 16;
		s1 <<= 8;
		s = s0 | s1 | s2 | s3;
		return s;
	}

	/**
	 * 用byte[]构造int数据,高位
	 */
	public static int byteToInt2(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;
	}
	

	/**
	 * 将in转换为byte[]
	 */
	public static byte[] intToByte(int i) {
		byte[] result = new byte[4];
		result[0] = (byte) ((i >> 24) & 0xFF);
		result[1] = (byte) ((i >> 16) & 0xFF);
		result[2] = (byte) ((i >> 8) & 0xFF);
		result[3] = (byte) (i & 0xFF);
		return result;
	}
	
	/**
	 * 将short转换为byte[]
	 * @param number
	 * @return
	 */
	public static byte[] shortToByte(short number) {
		int temp = number;
		byte[] b = new byte[2];
		for (int i = 0; i < b.length; i++) {
			b[i] = new Integer(temp & 0xff).byteValue();
			temp = temp >> 8;
		}
		return b;
	}
	

	/**
	 * 用byte[]构造short数据 低位
	 */
	public static short byteToShort(byte[] b) {
		short s = 0;
		short s0 = (short) (b[0] & 0xff);// 最低位
		short s1 = (short) (b[1] & 0xff);
		s1 <<= 8;
		s = (short) (s0 | s1);
		return s;
	}

	/**
	 * 用byte[]构造short数据,高位
	 */
	public static short byteToShort2(byte[] b) {
		short s = 0;
		short s0 = (short) (b[0] & 0xff);// 最低位
		short s1 = (short) (b[1] & 0xff);
		s0 <<= 8;
		s = (short) (s0 | s1);
		return s;
	}
	
	/**
	 * byte[]构造Long
	 */
	public static long byteToLong(byte[] b) {
		long num = 0;
		for (int ix = 0; ix < 8; ++ix) {
			num <<= 8;
			num |= (b[ix] & 0xff);
		}
		return num;
	}

	/**
	 * 截取byte[]数据,不够就补组成byte[]数组
	 * @param src
	 * @param begin 开始位置
	 * @param count 取少位
	 * @return
	 */
	public static byte[] subBytes(byte[] src, int begin, int count) {
		byte[] bs = new byte[count];
		for (int i = begin; i < begin + count; i++)
			bs[i - begin] = src[i];
		return bs;
	}

	/**
	 * 填充数据,不够位就补
	 * @param bytes 字符串
	 * @param length 填充长度
	 */
	public static byte[] makeUpBytes(byte[] bytes, int length) {
		int oLen;
		if (bytes == null) {
			oLen = 0;
		}
		oLen = bytes.length;
		if (oLen == length) {
			return bytes;
		}
		byte[] nBytes = new byte[length];
		for (int i = 0; i < length; i++) {
			if (i < oLen) {
				nBytes[i] = bytes[i];
			} else {
				nBytes[i] = 0;
			}
		}
		return nBytes;
	}
}

 

4  测试代码演示

package com;

public class ByteUtilTest {
	public static void main(String[] args) {
		byteStructureStr();
		strByte();
		getByteStr();
		
		byte by[] = intToByte();
		int num = byteToInt(by);
		System.out.println(num);
	}
	
	/**
	 * 将String转换为byte[],然后将byte[]元素拼成字符串输出
	 */
	public static void byteStructureStr(){
		//将String转换成byte[]
		String str = "你妹。";
		byte byte1[] = str.getBytes();
		//将str转换后的byte字节数组已字符串的形式打印出来的字符串
		String byteStr = "";		
		for(int i = 0; i < byte1.length; i++){
			String b = byte1[i] + "";
			if(i < byte1.length -1){
				byteStr += b + ",";
			}else{
				byteStr += b;
			}
		}
		System.out.println(byteStr);
	}
	
	/**
	 * byte[]构造String
	 */
	public static void strByte(){
		//byte构造String
		byte byte2[] = {-28, -67, -96, -27, -90, -71, -29, -128, -126};
		String nimei = new String(byte2);
		System.out.println(nimei);
	}
	
	/**
	 * 截取byte数组,不够就补位,然后用数构造字符串
	 */
	public static void getByteStr(){
		byte by[] = {-45,-78,-28, -67, -96, -27, -90, -71, -29, -128, -126, -37};
		int begin = 2;
		int length = 9;
		//截取后的byte数组,将这里的“9”修改为大于9的时候就是长度不够补位
		byte by2[] = new byte[length];
		int bynum = 0;
		for (int i = begin; i < begin + length; i++) {
			by2[bynum] = by[begin+bynum];
			bynum++;
		}
		
		System.out.println(new String(by2));
	}
	
	
	/**
	 * 将in转换为byte[],低位
	 */
	public static byte[] intToByte() {
		int i = 10000;
		byte[] result = new byte[4];
		result[0] = (byte) (i & 0xFF);
		result[1] = (byte) ((i >> 8) & 0xFF);
		result[2] = (byte) ((i >> 16) & 0xFF);
		result[3] = (byte) ((i >> 24) & 0xFF);
		return result;
	}
	
	/**
	 * 将byte[]转化为int,低位
	 * @param b
	 * @return
	 */
	public static int byteToInt(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;

		s3 <<= 24;
		s2 <<= 16;
		s1 <<= 8;
		s = s0 | s1 | s2 | s3;
		return s;
	}
	
	/**
	 * 将int转换为byte[],高位
	 */
	public static byte[] intToByte2() {
		int i = 10000;
		byte[] result = new byte[4];
		result[0] = (byte) ((i >> 24) & 0xFF);
		result[1] = (byte) ((i >> 16) & 0xFF);
		result[2] = (byte) ((i >> 8) & 0xFF);
		result[3] = (byte) (i & 0xFF);
		return result;
	}
	
	/**
	 * 用byte[]构造int数据,高位
	 */
	public static int byteToInt2(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;
	}
}

 

 

分享到:
评论

相关推荐

    转换Image数据为byte数组

    当涉及到网络传输或存储时,将图像数据转换为字节数组(byte array)成为了一种实用且高效的手段。下面,我们将深入探讨如何在Java中实现图像数据与字节数组之间的相互转换,并分析这一过程中的关键步骤和技术细节。...

    Image 和Byte数组之间转换

    在处理图像数据时,经常需要将图像对象(Image)转换为字节数组(Byte[])或者反之进行操作。这样的需求常见于网络传输、文件存储以及其他需要将图像数据序列化或反序列化的场景。本文档将详细介绍两个方法:一个是如何...

    byte与各类型之间的转化

    - 反之,可以使用`new String(byte[], Charset)`构造函数将字节数组转换为字符串。 ```java public static String byteToString(byte[] bytes) { return new String(bytes, StandardCharsets.UTF_8); } ``` #...

    Blob、InputStream、byte 互转

    `ByteArrayInputStream`构造函数接收一个`byte[]`数组作为参数,可以将其转换为`InputStream`对象。 #### InputStream与Blob之间的转换 1. **InputStream转Blob** 可以先将`InputStream`转换为`byte[]`,然后再...

    android_Drawable、Bitmap、byte[]之间的转换.doc

    在将`Bitmap`数据在网络上传输或存储到文件中时,通常需要将其转换为`byte[]`数组。 ```java private byte[] Bitmap2Bytes(Bitmap bm) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress...

    按byte截取字符串

    总结来说,“按byte截取字符串”是一项实用的技术,涉及到字符串编码、字节数组操作以及对Java语言特性的深入理解。在实际开发中,掌握这项技能对于处理与字节流相关的任务至关重要,尤其是在处理网络数据传输、文件...

    java中把对象转化为byte数组的方法.doc

    3. **安全性考虑**:反序列化可能存在安全风险,例如恶意构造的数据可能导致系统受到攻击。因此,在处理不可信来源的数据时,应格外小心。 4. **性能优化**:对于频繁进行序列化和反序列化的场景,可以考虑使用更...

    C#创建txt并保存数据,读取数据

    byte[] buffer = new byte[chunkSize]; int bytesRead; while ((bytesRead = file.Read(buffer, 0, chunkSize)) &gt; 0) { // 处理每个读取的数据块 string textChunk = Encoding.UTF8.GetString(buffer, 0, ...

    rar文件java post获取网页数据以及get方式获取数据.zip

    例如,要从一个网页获取数据,我们可以构造如下的URL: ```java String url = "http://example.com/data?id=123"; ``` 在Java中,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来发送GET请求: ``...

    java学习总结报告.doc

    【Java学习总结】 Java是一种广泛使用的面向对象的编程语言,主要应用于互联网领域。在学习Java的过程中,有几个核心概念和技术要点需要掌握。 1. **标识符**:标识符是用来定义类、变量、方法等的名称。Java...

    java使用udp协议和硬件进行数据收发处理

    总结来说,Java中的UDP网络编程涉及到创建和管理`DatagramSocket`,构造和解析`DatagramPacket`,以及处理可能的异常情况。开发者需要根据实际需求选择合适的方式实现数据的高效传输,同时注意处理可能出现的数据...

    JAVA数据类型转换.pdf

    同样地,可以利用这些包装类提供的构造函数和转换方法来完成不同类型间的转换。例如: ```java int i1 = 200; Double d1 = new Double(i1); ``` #### 五、字符串与其他数据类型的转换 字符串与其他数据类型之间的...

    Nandflash数据存储规则与数据读写方法.pdf

    以三星K9F1208U0M为例,每页包含528 Byte的数据,其中512 Byte为主存储区(Main Area),用于存储用户数据;16 Byte为备用存储区(Spare Area),主要用于存储错误校正代码(ECC)和其他元数据。 ##### 2.3 Block ...

    C语言知识点总结完美版.doc

    本文档涵盖了 C 语言的基础知识点,包括程序构造、数据类型、编译预处理、main 函数、算法、标识符、进制转换、整数与实数、算术表达式和赋值表达式等。 一、程序构造 * 程序构造有三种:顺序构造、选择构造(分支...

    android基于udp数据传输实例

    总结来说,这个"android基于udp数据传输实例"是一个很好的起点,可以帮助初学者理解Android应用中如何使用UDP进行数据通信。通过实践这个实例,可以深入理解UDP的工作原理,以及如何在Android环境中实现网络通信。

    JAVAOOP重点笔记总结.docx

    Java 基础类是 Java 中非常重要的一个概念,它是 Java 语言的基础组件,包括了 Java 的基本数据类型、字符串、日期和时间、数学运算等。这些基础类是 Java 程序的基础构成部分,对于 Java 程序员来说,理解和掌握...

    基本数据类型初始化1

    - `byte`、`char`、`short`、`int`、`long`、`float`和`double`类型的变量会被初始化为0。 - `boolean`类型的变量会被初始化为`false`。 例如,在类`ToStringClass`中,我们定义了一系列基本数据类型的成员变量:...

    Qt中QString、QByteArray、int、double之间转换 - 苦涩的茶 - 博客园1

    总结来说,Qt提供了便捷的方法在QString、QByteArray、int和double之间进行转换,这在处理各种数据类型时非常有用。在实际编程中,根据需求选择合适的转换方式,并注意检查转换的正确性,以确保数据的准确无误。

    关于Java基础的总结资料

    - **基本数据类型**:Java有8种基本数据类型,分为数值型(整数类型如`int`、`long`,浮点类型如`float`、`double`)和非数值型(字符`char`,布尔`boolean`,以及两种整数类型`short`和`byte`)。每种类型都有固定...

Global site tag (gtag.js) - Google Analytics