byte和hexstring,int,string等的转换类
public class HexConversion { /**
* 16进制数的字符串转字节数组(16进制转字节数组)
*
* @param hexString
* 16进制字符串
* @return 字节数组
*/
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
} public static String bytesToString(byte[] bytes){
int size=0;
for(int i=0;i<bytes.length;i++){
if(bytes[i]!=0){
size++;
}else{
break;
}
}
byte[] data=new byte[size];
System.arraycopy(bytes, 0, data, 0, size);
return new String(data);
} /**
* 字符转字节
*
* @param c
* 字符
* @return byte 字节
*/
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
} /**
* 字节转16进制字符串
*
* @param src
* 字节数组
* @return 16进制字符串
*/
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
} /**
* 字节转整型
*
* @param b 字节数组
* @return int型
*/
public static int byte2Int(byte[] b) {
int intValue = 0;
for (int i = 0; i < b.length; i++) {
intValue += (b[i] & 0xFF) << (8 * (3 - i));
//System.out.print("intvalue --- "+intValue+" ");
}
return intValue;
} public static long dowrd2Long(byte[] bytes) {
long unsignedLong=0;
for(int i=0;i<bytes.length;i++){
unsignedLong=(long)(unsignedLong|(0x000000FF & ((int) bytes[i]))<<(8*i));
}
return unsignedLong;
} public static long byteTranLong(byte[] b) {
long value = 0;
for (int i = 0; i < b.length; i++) {
value += (b[i] & 0xFF) << (8 * (3 - i));
}
return value;
} /**
* 整形转字节数组
*
* @param num
* 整形
* @return 字节数组
*/
public static byte[] int2bytes(int num) {
byte[] b = new byte[4];
//int mask = 0xff;
for (int i = 0; i < 4; i++) {
b[i] = (byte) (num >>> (24 - i * 8));
}
return b;
} /**
* 把4字节的数组转换成IP
*
* @param bytes
* 4个字节的字节数组
* @return 字符串IP地址
*/
// public static String bytes2Ip(byte[] bytes) {
// String ip = "";
// for (int i = 0; i < 4; i++) {
// String tmp = String.valueOf(bytes[i]);
// if (bytes[i] < 0) {
// tmp = String.valueOf(127+Math.abs(bytes[i]));
// }
//
// if (i < 3) {
// ip += tmp + ".";
// } else {
// ip += tmp;
//
// }
// }
// return ip;
// }
public static String bytes2Ip(byte[] bytes) {
String ip = "";
for (int i=0;i<bytes.length;i++) {
int inval = 0;
inval += (bytes[i] & 0xFF);
ip += inval + ".";
}
ip = ip.substring(0, ip.length() - 1);
return ip;
} /**
* IP地址转换字节数组
*
* @param ip
* 字符串
* @return 字节数组
*/
public static byte[] ip2Bytes(String ip) {
String[] ips = ip.split("[.]");
byte[] ipbs = new byte[4];
// IP地址压缩成4字节,如果要进一步处理的话,就可以转换成一个int了.
int j = 0;
for (int i =0;i<ipbs.length;i++) {
int m = Integer.parseInt(ips[j]);
ipbs[i] = (byte) (m & 0xFF);
j++;
// byte b = (byte) m;
// if (m > 127) {
// b = (byte) (127 - m);
// }
// ipbs[i] = b;
}
return ipbs;
} /**
* 字节数组转字符串
*
* @param bytes
* 字节数组/不足位补0的字节数组
* @return 字符串
*/
public static String bytes2String(byte[] bytes) {
int beginIndex = 0;
int endIndex=0;
int length=0;
// 判断是否补过0
for (int i = 0; i < bytes.length; i++) {
if (bytes[i] != 0) {
beginIndex=i;
break;
}
}
for (int i = bytes.length-1; i >=0; i--) {
if (bytes[i] != 0) {
endIndex=i;
break;
}
}
if(endIndex<=beginIndex){
length=0;
}else{
length=endIndex-beginIndex+1;
}
if(length==0){
return "";
}
byte[] b=new byte[length];
System.arraycopy(bytes, beginIndex, b, 0, length);
return new String(b);
} public static void main(String[] args) { }
}
byte和hexstring,int,string等的转换类的更多相关文章
- C# Enum,Int,String的互相转换 [转]
C# Enum,Int,String的互相转换 Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名 ...
- (转)C# Enum,Int,String的互相转换 枚举转换
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...
- C# Enum,Int,String的互相转换 枚举转换
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...
- C# Enum,Int,String的互相转换
版权声明:本文为博主原创文章,未经博主允许不得转载. Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用Int32.编程语言通常提供语法来声明由一组已 ...
- 【转】C# Enum,Int,String的互相转换 枚举转换
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...
- (转)C# Enum,Int,String的互相转换 枚举转换--非常实用
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...
- Enum,Int,String的互相转换
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基类 ...
- C++ char float int string 之间的转换
string str = "123"; string 转 int int i = atoi( str.c_str() ); string 转 float float f = ato ...
- go package 学习笔记 —— strconv(string与其他基本数据类型(int, float, bool)的转换)
strconv实现了go中基本数据类型与string之间的转换. How to use in go go doc:https://godoc.org/strconv import "strc ...
随机推荐
- IntelliJ IDEA 13破解(JRebel 5.6.3a破解)
首先安装IntelliJ 13,记得要下载Ultimate Edition版本,不然就不需要破解了.. 安装到本地,然后进行一些配置(这一步可以不要,但是考虑到以后换系统可以省事,推荐做) 打开{in ...
- mvc url路由参数的加密和解密
查看某个信息的时候一般会在url上加上该信息在数据库中对应的主键id(而且一般是自增的) url是这样子的 xxxDetail/1 , 虽然对于我们开发人员来说可以这种显式的数据库主键会方便调试过程, ...
- ROS多个master消息互通
需求 有时候我们需要有几个不同的master, 他们之间要交换topic的内容,这时候就不能使用ros自带的设置同一个master的方法. 我们的处理方法是,构造一个client和一个server,他 ...
- SystemServer相关
SystemServer分析 由Zygote通过Zygote.forkSystemServer函数fork出来的.此函数是一个JNI函数,实现在dalvik_system_Zygote.c中. 1.S ...
- Go support for Android
Go support for Android David Crawshaw June 2014 Abstract We propose to introduce Go support for the ...
- iOS学习之UITabBarController
一.标签视图控制器——UITabBarController 1.UITabBarController的继承关系: @interface UITabBarController : UIViewContr ...
- IOS之表视图单元格删除、移动及插入
1.实现单元格的删除,实现效果如下 - (void)viewDidLoad { [super viewDidLoad]; //设置导航栏 self.editButtonItem.title = @&q ...
- Python实现nb(朴素贝叶斯)
Python实现nb(朴素贝叶斯) 运行环境 Pyhton3 numpy科学计算模块 计算过程 st=>start: 开始 op1=>operation: 读入数据 op2=>ope ...
- [原]项目进阶 之 集群环境搭建(二)MySQL集群
上次的博文中我们介绍了一下集群的相关概念,今天的博文我们介绍一下MySQL集群的相关内容. 1.MySQL集群简介 MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单 ...
- 1.1 MySQL 逻辑架构