String 转 byte

小A_菜鸡 2015-04-17 08:47:10
将字符串
String str = "00 00 04 F5 FA C8 2A 90";
转换成byte数组
转换后格式为
b={0,0,4,F5,FA,C8,2A,90}
请大神指点~

java语言~
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzi05 2015-04-17
  • 打赏
  • 举报
回复
引用 1 楼 u011004037 的回复:

import java.util.*;

public class Main{
	public static void main(String[] args) {
		String str = "00 00 04 F5 FA C8 2A 90";
		String[] strs = str.split("\\s+");
		byte[] b = new byte[strs.length];
		for(int i=0; i<strs.length; ++i){
			// System.out.println(Integer.parseInt(strs[i], 16));
			try{
				b[i] = Byte.parseByte(strs[i], 16);
			}
			catch(Exception e){
				e.printStackTrace();
			}
		}
		System.out.println(Arrays.toString(b));
	}

}
额,F5等已经超出byte的范围了,byte最大127, F5是245!
也可以这样

	for(int i=0; i<strs.length; ++i){
			int tmp = Integer.parseInt(strs[i], 16);
			b[i] = (byte)(tmp>Byte.MAX_VALUE ? (Byte.MAX_VALUE-tmp) : tmp);
	}
这样从虽然有负数,但是正好和F5等匹配
youzi05 2015-04-17
  • 打赏
  • 举报
回复

import java.util.*;

public class Main{
	public static void main(String[] args) {
		String str = "00 00 04 F5 FA C8 2A 90";
		String[] strs = str.split("\\s+");
		byte[] b = new byte[strs.length];
		for(int i=0; i<strs.length; ++i){
			// System.out.println(Integer.parseInt(strs[i], 16));
			try{
				b[i] = Byte.parseByte(strs[i], 16);
			}
			catch(Exception e){
				e.printStackTrace();
			}
		}
		System.out.println(Arrays.toString(b));
	}

}
额,F5等已经超出byte的范围了,byte最大127, F5是245!
小A_菜鸡 2015-04-17
  • 打赏
  • 举报
回复
OK 了,但是在快速调用的时候 Integer.parseInt(strs[i], 16); 会出错。

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧