java byte 16进制转换

整型转16进制:  

int devIdInt = Integer.parseInt(devId);
String devIdString =
Integer.toHexString(devIdInt);

16进制转为字节:

byte devBin = (byte) Integer.parseInt(devIdString, 16);

byte devBin =Integer.valueOf(devIdString, 16).byteValue();

byte devBin =Byte.parseByte(devIdString, 16);

在Java中想把 9D 转成 byte,首先想到的是

[java] view plaincopy

  1. byte v = Byte.parseByte("9D", 16);

结果得到一个java.lang.NumberFormatException,说值的范围越界了。

是的,byte的范围是-128~127,如果把9D当成正数来转换,结果是157,当然越界了。

问题是我用的是Byte.parseByte()啊……难道Java还不能明确我是要把2位16进制转换为byte么?最高位是1的情况,直接给我转换成负数-99就行,干嘛非要转换成157再告诉我越界呢……神仙!

无奈+无语之后当然还是要解决问题的,Byte.parseByte()不行,那只好用Integer.parseInt()啦……

所以有这样两个处理办法

[c-sharp] view plaincopy

  1. byte v = (byte) Integer.parseInt("9D", 16);

  2. // 或者

  3. byte v = Integer.valueOf("9D", 16).byteValue();

java byte 16进制转换,布布扣,bubuko.com

时间: 2024-12-26 18:37:08

java byte 16进制转换的相关文章

java 16进制转换10进制

public static String toHexString2(byte[] b) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; ++i) { buffer.append(toHexString2(b[i])); } return buffer.toString(); } public static String toHexString2(byte b) { char[] buffer =

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jdk1.6.u45及1.7u45均尝试了,也重现. 重现步骤很简单,使用debug模式启动时较容易出来,debug启动tomcat,(我的是webapp)然后在页面上随便点点即发现eclipse僵死,且任何从浏览器发出的请求都卡住不能被接收执行. 1.然后从任务管理器直接杀掉eclipse对应的jav

从16进制转换成汉字

/// <summary> /// 从16进制转换成汉字 /// </summary> /// <param name="hex"></param> /// <returns></returns> public static string GetChsFromHex(string hex) { if (hex == null) throw new ArgumentNullException("hex&qu

蓝桥杯 16进制转换8进制

蓝桥杯 16进制转换8进制 我表示我自己太渣渣了,总是超时,通不过测试. 题目 问题描述 给定n个十六进制正整数,输出它们对应的八进制数.输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000.输出格式 输出n行,每行为输入对应的八进制正整数.注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0.样例输入239123ABC样例输出7144

java中的进制转换

进制转换 首先是十进制转化为其他进制,如二进制,八进制,十六进制: 它们在java中都有专门的函数可供调用: 如:十进制转化为二进制时调用toBinaryString(); 十进制转化为八进制时调用toOctalString(); 十进制转化为十六进制时调用toHexString(); 代码实现: // 进制转化 public class Main_2 { public static void main(String[] args) { Integer a=new Integer(20); //

Javascript颜色rgb与16进制转换代码

Javascript实现颜色rgb与16进制转换的方法.分享给大家供大家参考.具体如下: Color(12,34,56); Color("#fff") Color("#defdcd") //颜色转换 var Color = function() {   if (!(this instanceof Color)) {    var color = new Color();    color._init.apply(color, arguments);    retur

C# 字符与16进制转换

一个字节包含8个二进制位,一个十六进制可表示4个二进制位,所以,一个字节可以由2个十六进制表示 总结如下: (1)一个byte 对应两位十六进制位,而不是八位(32位二进制位): (2)转化为十六进制之后,不足两位的,高位要补零. 8位十六进制数占多少字节 比如0x12345678这是多少字节? 一位十六进制代表四位二进制,0x12345678转换成二进制就是0001-0010-0011-0100-0101-0110-0111- 1000而没八位二进制占一个字节,所以你 8位十六进制数占4字节

JAVA中的进制转换问题

十进制转成十六进制:  Integer.toHexString(int i) 十进制转成八进制  Integer.toOctalString(int i) 十进制转成二进制  Integer.toBinaryString(int i) 十六进制转成十进制  Integer.valueOf("FFFF",16).toString() 八进制转成十进制  Integer.valueOf("876",8).toString() 二进制转十进制  Integer.value