登录
|
立即注册
论坛
BBS
搜索
逆向未来技术社区
»
论坛
›
综合讨论
›
编程开发
›
帖子
java byte数组与int,long,short,byte转换
[复制链接]
8435
4
发表在
Java
2015-3-26 20:12:04
|
查看全部
|
阅读模式
这两天碰到的小问题,给初学者一点帮助吧。
public class DataTypeChangeHelper {
/**
* 将一个单字节的byte转换成32位的int
*
* @param b
* byte
* @return convert result
*/
public static int unsignedByteToInt(byte b) {
return (int) b & 0xFF;
}
/**
* 将一个单字节的Byte转换成十六进制的数
*
* @param b
* byte
* @return convert result
*/
public static String byteToHex(byte b) {
int i = b & 0xFF;
return Integer.toHexString(i);
}
/**
* 将一个4byte的数组转换成32位的int
*
* @param buf
* bytes buffer
* @param byte[]中开始转换的位置
* @return convert result
*/
public static long unsigned4BytesToInt(byte[] buf, int pos) {
int firstByte = 0;
int secondByte = 0;
int thirdByte = 0;
int fourthByte = 0;
int index = pos;
firstByte = (0x000000FF & ((int) buf[index]));
secondByte = (0x000000FF & ((int) buf[index + 1]));
thirdByte = (0x000000FF & ((int) buf[index + 2]));
fourthByte = (0x000000FF & ((int) buf[index + 3]));
index = index + 4;
return ((long) (firstByte << 24 | secondByte << 16 | thirdByte << 8 | fourthByte)) & 0xFFFFFFFFL;
}
/**
* 将16位的short转换成byte数组
*
* @param s
* short
* @return byte[] 长度为2
* */
public static byte[] shortToByteArray(short s) {
byte[] targets = new byte[2];
for (int i = 0; i < 2; i++) {
int offset = (targets.length - 1 - i) * 8;
targets
= (byte) ((s >>> offset) & 0xff);
}
return targets;
}
/**
* 将32位整数转换成长度为4的byte数组
*
* @param s
* int
* @return byte[]
* */
public static byte[] intToByteArray(int s) {
byte[] targets = new byte[2];
for (int i = 0; i < 4; i++) {
int offset = (targets.length - 1 - i) * 8;
targets
= (byte) ((s >>> offset) & 0xff);
}
return targets;
}
/**
* long to byte[]
*
* @param s
* long
* @return byte[]
* */
public static byte[] longToByteArray(long s) {
byte[] targets = new byte[2];
for (int i = 0; i < 8; i++) {
int offset = (targets.length - 1 - i) * 8;
targets
= (byte) ((s >>> offset) & 0xff);
}
return targets;
}
/**32位int转byte[]*/
public static byte[] int2byte(int res) {
byte[] targets = new byte[4];
targets[0] = (byte) (res & 0xff);// 最低位
targets[1] = (byte) ((res >> 8) & 0xff);// 次低位
targets[2] = (byte) ((res >> 16) & 0xff);// 次高位
targets[3] = (byte) (res >>> 24);// 最高位,无符号右移。
return targets;
}
/**
* 将长度为2的byte数组转换为16位int
*
* @param res
* byte[]
* @return int
* */
public static int byte2int(byte[] res) {
// res = InversionByte(res);
// 一个byte数据左移24位变成0x??000000,再右移8位变成0x00??0000
int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00); // | 表示安位或
return targets;
}
}
初学者
,
java
举报
使用道具
回复
精彩评论
4
JackIO
发表于 2015-3-26 21:50:41
|
显示全部楼层
谢谢分享,赞一个。
举报
使用道具
回复
支持
反对
默小坑
发表于 2015-3-27 18:26:09
来自手机
|
显示全部楼层
感谢分享
举报
使用道具
回复
重复单调〃
发表于 2015-7-29 10:59:19
|
显示全部楼层
提示:
作者被禁止或删除 内容自动屏蔽
举报
使用道具
回复
支持
反对
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
s5689412
1
主题
4
回帖
1
积分
Ta的主页
发信息
热点动态
1.
Android killer个人自制plus版
2.
自动脱壳工具drizzleDumper
3.
android killer 小插件 方便搜索资源id(更
4.
论坛程序由DZ3.4成功升级到DZ3.5
5.
分享两种 iOS 侧载应用方法
6.
Android killer 1.3.1 个人修改版
7.
Arm汇编转换器修改版
8.
跟着鬼哥学so修改,六,实例第三篇
快速回复
返回顶部
返回列表