Android String与十六进制数互转
2024-08-26 22:47:51
/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str)
{ char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit; for (int i = ; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> ;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
} /**
* 十六进制转换字符串
* @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
* @return String 对应的字符串
*/
public static String hexStr2Str(String hexStr)
{
String str = "0123456789ABCDEF";
char[] hexs = hexStr.toCharArray();
byte[] bytes = new byte[hexStr.length() / ];
int n; for (int i = ; i < bytes.length; i++)
{
n = str.indexOf(hexs[ * i]) * ;
n += str.indexOf(hexs[ * i + ]);
bytes[i] = (byte) (n & 0xff);
}
return new String(bytes);
} /**
* bytes转换成十六进制字符串
* @param byte[] b byte数组
* @return String 每个Byte值之间空格分隔
*/
public static String byte2HexStr(byte[] b)
{
String stmp="";
StringBuilder sb = new StringBuilder("");
for (int n=;n<b.length;n++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length()==)? ""+stmp : stmp);
sb.append(" ");
}
return sb.toString().toUpperCase().trim();
} /**
* bytes字符串转换为Byte值
* @param String src Byte字符串,每个Byte之间没有分隔符
* @return byte[]
*/
public static byte[] hexStr2Bytes(String src)
{
int m=,n=;
int l=src.length()/;
System.out.println(l);
byte[] ret = new byte[l];
for (int i = ; i < l; i++)
{
m=i*+;
n=m+;
ret[i] = Byte.decode("0x" + src.substring(i*, m) + src.substring(m,n));
}
return ret;
} /**
* String的字符串转换成unicode的String
* @param String strText 全角字符串
* @return String 每个unicode之间无分隔符
* @throws Exception
*/
public static String strToUnicode(String strText)
throws Exception
{
char c;
StringBuilder str = new StringBuilder();
int intAsc;
String strHex;
for (int i = ; i < strText.length(); i++)
{
c = strText.charAt(i);
intAsc = (int) c;
strHex = Integer.toHexString(intAsc);
if (intAsc > )
str.append("\\u" + strHex);
else // 低位在前面补00
str.append("\\u00" + strHex);
}
return str.toString();
} /**
* unicode的String转换成String的字符串
* @param String hex 16进制值字符串 (一个unicode为2byte)
* @return String 全角字符串
*/
public static String unicodeToString(String hex)
{
int t = hex.length() / ;
StringBuilder str = new StringBuilder();
for (int i = ; i < t; i++)
{
String s = hex.substring(i * , (i + ) * );
// 高位需要补上00再转
String s1 = s.substring(, ) + "";
// 低位直接转
String s2 = s.substring();
// 将16进制的string转为int
int n = Integer.valueOf(s1, ) + Integer.valueOf(s2, );
// 将int转换为字符
char[] chars = Character.toChars(n);
str.append(new String(chars));
}
return str.toString();
}
最新文章
- scanf、printf、gets、puts的应用及区别
- 《机电传动控制》PLC仿真
- easyui 日期控件清空值
- 下载ADT
- 几种网络加载的过渡(更新MaterialProgressBar)
- 2015年第5本(英文第4本):Death on the Nile尼罗河上的惨案
- ifrog-1028 Bob and Alice are playing numbers(trie树)
- python str()与repr()
- hdu 5112 A Curious Matt
- 容器适配器之priority_queue
- MongoDB实战指南(五):MongoDB中的聚集分析
- css案例学习之table tr th td ul li实现日历
- 使用SigbalR发送通知
- 【LeetCode】152. Maximum Product Subarray
- 9.Spark Streaming
- LR接口压力测试实战(限量抢红包接口)
- 数据库MySQL的基本操作
- 用UltraISO制作CentOS U盘安装盘
- redis 数据库安装和基本使用
- 教你控制 RecyclerView 滑动的节奏
热门文章
- 从“窃听门”事件解读手机Rootkit攻击
- C#异步编程的实现方式(4)——Task任务
- JavaScript--Module模式
- BZOJ4817: [Sdoi2017]树点涂色(LCT)
- ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
- CentOS不能进入登录界面
- ubuntu下useradd与adduser差别,新建用户不再home文件夹下
- 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)
- 字串乱序 PHP&JS
- java的23中设计模式