`
xsh5324
  • 浏览: 71526 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java基本数据类型(short,int,long,char)与bytes之间互转

    博客分类:
  • java
阅读更多

在编写网络通信的时候通常会指定一个报头来说明C/S端数据的协议和内容体的长度,内容长度在java代码里面通常表现为一个int类型或是long类型,但是在将int或long弄写到通信管道的却需要将其转成字节数组。公司有人这样写:

String length = String.valueOf(request.getData().length);
while (length.length() < 4) {
	length = "0" + length;
}
byte[] header=length.getBytes();

简直无法直视对吧,因看不惯这样的代码,本人决定写一个工具类来处理这些基础类型到byte数组的互换。下面贴上代码:

 

 

public static byte[] toBytes(int n) {
		byte[] bytes = new byte[4];
		for (int i = 0; i < bytes.length; i++) {
			bytes[i] = (byte) ((n >> (i << 3)) & 0xFF);
		}
		return bytes;
	}
	public static byte[] toBytes(long n) {
		byte[] bytes = new byte[8];
		for (int i = 0; i < bytes.length; i++) {
			bytes[i] = (byte) ((n >> (i << 3)) & 0xFF);
		}
		return bytes;
	}
	public static int toInt(byte[] bytes) {
		int n = 0;
		for (int i = 0; i < bytes.length; i++) {
			n = n | ((bytes[i] & 0xff) << (i << 3));
		}
		return n;
	}
	public static long toLong(byte[] bytes) {
		long n = 0;
		for (int i = 0; i < bytes.length; i++) {
			n = n | ((bytes[i] & 0xffL) << (i << 3));
		}
		return n;
	}
	public static byte[] toBytes(short n){
		byte[] bytes=new byte[2];
		for (int i = 0; i < bytes.length; i++) {
			bytes[i] = (byte) ((n >> (i << 3)) & 0xFF);
		}
		return bytes;
	}
	public static byte[] toByte(char c){
		return toBytes((short)c);
	}
	public static short toShort(byte[] bytes){
		short n = 0;
		for (int i = 0; i < bytes.length; i++) {
			n = (short) (n | ((bytes[i] & 0xff) << (i << 3)));
		}
		return n;
	}
	public static char toChar(byte[] bytes){
		return (char)toShort(bytes);
	}

 相信在大学里面好好学过C的人都能看懂这代码的意思,我就不作太多解释了 ^_^ 。

1个字节有8bit ,0xFF表示一个8位全1的字节,如果将其与一个int型数进行&运算则能取出此int的第1个字节。如果将0xff左移8位再与此int进行&运算则能取出它的第2个字节,依此类推. 从byte数组到int则是一个逆向的“或”(运算符“|” )过程。

 

0
2
分享到:
评论

相关推荐

    java基本类型与byte数组互相转换.pdf

    Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本类型与 byte 数组互相转换的相关知识点: 1. short 类型转换成 byte 数组 在 Java 中,short 类型是 16 位的整数类型,而 byte 数组是...

    java数据类型转byte数组

    ip地址转4字节byte,char转2字节byte,byte数组转char,int整数转换为4字节的byte数组,byte数组转换为int整数,double类型转8字节数组,8位数组转double,long整数转换为8字节的byte数组,short整数转换为2字节的...

    C语言中各种数据类型长度.pdf

    C语言有五种基本数据类型:int、float、double、char、void和enum。其中,int是用于定义整数的,float和double是用于定义浮点数的,char是用于定义字符的,void是用于定义无类型的指针,enum是用于定义枚举类型的。 ...

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

    在Java编程语言中,数据类型分为两种:基本类型(primitive types)和引用类型(reference types)。基本类型包括整型(如int、short、byte、long)、浮点型(如float、double)、字符型(char)以及布尔型(boolean...

    Java后端开发面试常见问题

    装箱就是自动将基本数据类型转换为包装器类型(int--&gt;Integer);调用方法:Integer的valueOf(int) 方法。 拆箱就是自动将包装器类型转换为基本数据类型(Integer--&gt;int)。调用方法:Integer的intValue方法。 在...

    Java的五种数据类型的解析

    Java是一种强类型编程语言,它的数据类型分为两大类:简单数据类型(基本数据类型)和引用数据类型。本文主要探讨的是Java的五种简单数据类型,包括它们的初始化、封装类以及相关的特性。 1. 简单数据类型初始化: ...

    C语言基础-数据类型演示文稿

    C语言中的数据类型主要包括基本数据类型、复合数据类型等。这些类型的选择直接影响到程序的效率和可靠性。 ##### 2.1 什么是变量与常量? - **变量**:在计算机内存中,变量是能够被频繁修改的数据。变量需要在...

    C#类型转换

    在C#中,类型转换是一项非常重要的功能,它允许我们在不同数据类型之间进行灵活的变换。本文将深入探讨C#中的类型转换,包括装箱与拆箱、数值类型间的转换、字符编码、字符串与数值之间的转换等多种类型转换方式。 ...

    JAVA面试题最全集,JAVA面试题最全集

    Java中有八种基本数据类型,分为两类:整数类型(byte、short、int、long)和浮点类型(float、double),此外还包括布尔类型(boolean)和字符类型(char)。而`String`不是基本数据类型,它是Java中的一个类,用来...

    C++整型、字符型、浮点型专题

    本文深入探讨了C++中的三种基本数据类型:整型、字符型和浮点型。这些数据类型是编程中最常用的基础类型,理解和掌握它们对于编写高效的C++程序至关重要。 #### 一、整型 1. **基本概念**: - **整型**(Integer ...

    JAVA_JDK核心API

    Java.lang包是Java标准库中最基本也是最核心的包之一,包含了所有Java编程语言的基本类,例如:`String`、`Math`、基本数据类型的包装类等。这些类在开发过程中被广泛使用。 ##### 包装类 包装类是用于封装基本...

    包装类和字符串1

    - Java有八种基本数据类型,包括`byte`、`short`、`int`、`long`、`float`、`double`、`char`和`boolean`。 - 对应这些基本类型,Java提供了八个包装类:`Byte`、`Short`、`Integer`、`Long`、`Float`、`Double`、...

    Java达内学习笔记2.pdf

    4. 基本数据类型(Primitive Data Types): - `boolean`表示逻辑值,`true`或`false`。 - `char`存储16位Unicode字符,同时具有字符和整数特性。 - `byte`, `short`, `int`, `long`代表不同大小的整数,分别对应...

    一套比较基础的java 笔试题目

    - AIDL 支持基本数据类型如 `int`, `String` 等。 - 支持自定义类型,但需要通过 `parcelable` 或 `serializable` 实现序列化。 - 不支持泛型。 #### 九、View与SurfaceView的选择 1. **游戏开发中的选择:** ...

    JAVA面试题目及答案(基础+框架+数据库+项目)

    - `DataOutputStream`:用于写入Java基本数据类型。 - **转换流** - `InputStreamReader`:将字节流转换为字符流。 - `OutputStreamWriter`:将字符流转换为字节流。 - **管道流** - `PipedInputStream`:用于从...

    Java经典理论面试100题.pdf

    22. **基本数据类型与引用类型**:基本数据类型包括byte、short、int、long、float、double、char和boolean,引用类型是对象的引用。 23. **String类API**:`length()`、`charAt()`、`substring()`、`indexOf()`和`...

    关于C#.NET的字符转换

    在C#.NET编程中,字符转换是一个非常基础且重要的概念,尤其对于处理数据类型转换的开发者来说。本文将深入探讨C#中字符转换的各种方法,包括装箱/拆箱、别名、数值类型间的转换、字符编码(ASCII与Unicode)、字符...

    JAVA程序员笔试题

    - **基本数据类型**:包括`byte`, `short`, `int`, `long`, `float`, `double`, `char`, `boolean`等,这些类型直接存储数值或值本身。 - **String类型**:不是基本数据类型,而是一个类(`class`),用于存储和操作...

    精品专题(2021-2022年收藏)C程序设计实验报告.doc

    这个程序展示了C语言中各种基本数据类型的大小,让学生了解不同类型的内存需求。 三、运算符和表达式 实验还涵盖了运算符的使用,特别是算术运算符和赋值运算符。例如: ```c main() { int i, j, m, n; i = 8; ...

Global site tag (gtag.js) - Google Analytics