问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

字符串和字节数组之间互相转换失败

发布网友 发布时间:2022-04-22 16:12

我来回答

3个回答

热心网友 时间:2023-09-14 18:05

方法一
思路:先把byte[] 转换维char[] ,再把char[] 转换为字符串
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14

public static String bytes2Hex(byte[] src) {
if (src == null || src.length <= 0) {
return null;
}

char[] res = new char[src.length * 2]; // 每个byte对应两个字符
final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
for (int i = 0, j = 0; i < src.length; i++) {
res[j++] = hexDigits[src[i] >> 4 & 0x0f]; // 先存byte的高4位
res[j++] = hexDigits[src[i] & 0x0f]; // 再存byte的低4位
}

return new String(res);
}

方法二

思路:先把byte转换为int类型,再转换为字符串
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

public static String bytesToHex(byte[] src){
if (src == null || src.length <= 0) {
return null;
}

StringBuilder stringBuilder = new StringBuilder("");
for (int i = 0; i < src.length; i++) {
// 之所以用byte和0xff相与,是因为int是32位,与0xff相与后就舍弃前面的24位,只保留后8位
String str = Integer.toHexString(src[i] & 0xff);
if (str.length() < 2) { // 不足两位要补0
stringBuilder.append(0);
}
stringBuilder.append(str);
}
return stringBuilder.toString();
}

热心网友 时间:2023-09-14 18:05

你这就是编码的问题

热心网友 时间:2023-09-14 18:06

编码不对应 ~~~~~~ 看看JAVA的源码的编码
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“晚来天欲雪,能饮一杯无?”是什么意思_出处及原文翻译_学习力 胸肌中部怎么练 血沉高是怎么回事,怎样才能降低啊! 中海锦江城多久交房 “QMS”作为“质量管理体系”的英文缩写,其背后理论及应用如何?_百度... 我用QQ登的快手绑定了一个电话号码,电话号码不用了,现在怎么能登得进去... 桂林银行白金客户条件 桂林银行最高等级卡 iQOO 11系列曝光,预计年底正式发布! vivo X90先别买?iQOO 11系列配置堪称豪华 byte a , b.把这两个byte转换成一个short,a作为高8位,转换的时候 ( (a & 0xff) &lt;&lt; 8 ) | ( b & 0xff) ) 怎么把0xFF 存进 一个长度的byte数组中 java 如何将string src = &quot;ff&quot; 转为 byte[] bt = {(byte)0xff} int 2 byte 需要&0xff吗? bytes[0] = (byte) (data & 0xff);这个语句什么意思 byte为什么要与上0xff (byte)((i &gt;&gt; 24) & 0xFF); 怎么理解啊 java 怎么把字符串转化成整型 java 字节 & 0xFF 什么意思, &lt;=0xF又是什么意思 0xff是几kb C语言,单片机主要运用到那些? Java:转16进制时常见的【byte[i] & 0xFF】是什么意思呢? byte x=(byte)0xff;的十进制是多少? Java:关于byte转16进制的& 0xFF,我的理解正确吗? 钉钉怎么找回我的家庭退出了的成员? 怎么在钉钉上建我的家庭可以看自己的作业? 钉钉群里我们班有48个学生,注册后有的家长注册了两个怎么取消? 钉钉怎样把添加的家人取消掉? 钉钉设置怎么删除家庭地址 java byte转换成字符串? java new Byte(&quot;FF&quot;); 为什么会报错? 张靓颖 我相信的铃声在哪里找啊 急 求能增加快手直播真实粉丝互动平台!!! 快手粉丝号在哪里买 快手粉丝数据分析软件哪个好? 快手上粉丝涨好还是赞多好 新浪微博关注人数是怎么分级的?? 新浪微博是什么? 新浪微博一天可以关注多少人,怎样才可以无限制 新浪微博每天关注人数的上限是多少? 水晶泥弄到头发上了,怎样把它洗掉? 怎样找到手机上的通讯录? 著作权登记都需要准备哪些证件 版权登记的国际公约 怎样才能免费找到手机通讯录 橡皮泥沾头发上怎么办 作品著作权只有经过登记才能得到法律保护对吗 iphone丢失如何找到通讯录 如何进行著作权登记?