- 浏览: 1324772 次
- 性别:
- 来自: 湖南澧縣
文章分类
最新评论
-
虾米小尹:
不行啊!2.2-0.25=1.9500000000000002 ...
JavaScript浮点数运算 —— 精度问题 -
heluping000000:
引用String a= "abc",首先在 ...
String,到底创建了多少个对象? -
mack:
谢谢分享matcher.appendReplacement(s ...
string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement -
wzt3309:
完全理解,比网上其他资料都要详细
String,到底创建了多少个对象? -
u014771876:
Java中十六进制转换 Integer.toHexString()
为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用:
Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6)
byteVar & 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(...) | 0xFFFFFF00的作用是,如果byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样可以通过substring方法进行截取最后两位即可。
import junit.framework.TestCase; public class Hex extends TestCase { public void testPositiveIntToHex() { //如果正数小于15时,只输入一位,而不是按我们想像的两位标准十六进制输出显示的,后面解决这个问题 System.out.println(Integer.toHexString(2));//2 System.out.println(Integer.toHexString(15));//f System.out.println(Integer.toHexString(16));//10 System.out.println(Integer.valueOf("F", 16));//16 } /* * Integer.valueOf()实质上调用的是Integer.parseInt()来完成的,所以 * Integer.parseInt()与Integer.valueOf()功能是一样的,只是返回值不 * 一样而已 */ public void testNegativeIntToHex() { //负整数时,前面输入了多余的 FF ,没有去掉前面多余的 FF,按并双字节形式输出 System.out.println(Integer.toHexString(-2).toUpperCase());//FFFFFFFE //实质上0xFF会像转换成0x000000FF后再进行位运算 System.out.println(Integer.toHexString(-2 & 0xFF).toUpperCase());//FE System.out.println(Integer.toHexString(-2 & 0x000000FF).toUpperCase());//FE //注,FE输出时不会为-2,因为此时不会把FE看成负数,valueOf会把所有数字串看成正的 System.out.println(Integer.valueOf("FE", 16));//254 //如果要输出-2,只能按以下形式输出 System.out.println(Integer.valueOf("-2", 16));//-2 //所以要把 FE 看成负的话,只能在前面加上负号,但是这里输出还不是-2, //而是先计算Integer.valueOf("FE", 16),再在结果前加上负 System.out.println(Integer.valueOf("-FE", 16));//-254 /* 所以如果要输入某个负数,我们只能先求出该数的绝对值的原码十六进制,再在前面加上负号, * 例如求表示-128,则先对绝对值128求十六进制 80,再在前面加上负号 -80 */ System.out.println(Integer.valueOf("-80", 16));//-128 /* 为什么说valueOf把所有数字串看成正的呢?请看下面三行代码,因为最大正数为2147483647, * 如果再 在7fffffff基础上加上一个一,运行肯定会出错误(这与直接输出0x80000000不一样), * 那么就可以证明 */ System.out.println(Integer.valueOf("7fffffff", 16));//2147483647 //此句运行时会报错,因为最大正数为7fffffff,但如 -80000000 却又可以运行,因为没超出整数范围 //System.out.println(Integer.valueOf("80000000", 16));//不能运行,已注掉 System.out.println(Integer.valueOf("-80000000", 16));//-2147483648 /* 注,输出时不是负数,而是正,因为0xFE只有8位,而整数是32位,所以以int形式出现时前 * 面会自动补24个零,第一位是零,所以最后是正数 */ System.out.println(0xFE);//254 System.out.println(-0xFE);//-254 //但0x80000000已满,无需补,第一位为一,所以最后为负数 System.out.println(0x80000000);//-2147483648 } public void testNegativeIntToBin() { System.out.println(Integer.toBinaryString(-2));//11111111111111111111111111111110 //实质上0xFF会像转换成0x000000FF后再进行位运算 System.out.println(Integer.toBinaryString(-2 & 0xFF));//11111110 System.out.println(Integer.toBinaryString(-2 & 0x000000FF));//11111110 //与上面十六进制是一样的 System.out.println(Integer.valueOf("1111111111111111111111111111111", 2));//2147483647 //下面语句运行会出错,已注掉 //System.out.println(Integer.valueOf("10000000000000000000000000000000", 2)); System.out.println(Integer.valueOf("-10000000000000000000000000000000", 2));//-2147483648 System.out.println(Integer.valueOf("11111110", 2));//254 System.out.println(Integer.valueOf("-11111110", 2));//-254 /* 注,Java中没有直接使用二进制表示一个数(目前只支持八与十六进制直接表示法),下面其实是一个 * 八进制的数与十进制的数 */ System.out.println(010);//8 System.out.println(10);//10 } public void testByteToHex() { byte negativeByte = -2; byte positiveByte = 2; /* toHexString方法类型为int型,所以转Hex前参数会提升成整型后再进行转换,过程如下: * 10000010(原码)->11111110(补码)->11111111 11111111 11111111 11111110(提升) * ->FFFFFFFE(转Hex进制输出) */ System.out.println(Integer.toHexString(negativeByte).toUpperCase());// FFFFFFFE /* 第一步把-2转成整型: * 10000010(原码)->11111110(补码)->11111111 11111111 11111111 11111110(转整型) * 第二步把 0xFF 前补24个零: * 00000000 00000000 00000000 11111111 * 第三步:把第一二步结果进行与位运算: * 00000000 00000000 00000000 11111110 * 最后一步:转十六进制结果为 FE */ System.out.println(Integer.toHexString(negativeByte & 0xFF).toUpperCase());// FE //另一种转换,可以针对负数与正数的byte都可以以完整的单字节输出 System.out.println(Integer.toHexString((negativeByte & 0x000000ff) | 0xffffff00) .substring(6).toUpperCase());//FE System.out.println(Integer.toHexString((positiveByte & 0x000000ff) | 0xffffff00) .substring(6).toUpperCase());//02 } /** * 位运算与算术运行中的类型提升机制是一样的 */ public void testBiteMathematical() { System.out.println(0x8000000000000000L);//-9223372036854775808 System.out.println((int) 0x8000000000000000L);//0 System.out.println(0x8000000000000010L);//-9223372036854775792 System.out.println(0x80000000);//-2147483648 System.out.println(0x80000010);//-2147483632 //0x00000010提升成长整型,最后结果为长整型0x8000000000000010L System.out.println(0x00000010 | 0x8000000000000000L);//-9223372036854775792 //0x0010提升成整形,最后结果为整型0x80000010 System.out.println(0x0010 | 0x80000000);//-2147483632 } }
发表评论
-
Java正则表达式
2014-03-14 10:16 1710Java正则表达式详解 作者:jzj 文 ... -
类的初始化与清理
2013-06-24 22:20 1404初始化时内存清零 当创建一个对象时,首先将在堆上为这个对象分 ... -
protected,这个错了吗?
2013-06-24 22:17 1192这几天对protected修饰符有点迷糊,随便找同事要了一本 ... -
Java中BigDecimal的8种舍入模式
2013-06-21 18:42 2136java.math.BigDecimal不可变的、任意精度的 ... -
Tomcat性能参数设置
2010-12-27 15:35 34689默认参数不适合生产环境使用,因此需要修改一些参数 1、 ... -
Java 6 JVM参数选项大全
2010-12-14 11:16 1592http://kenwublog.com/docs/java6 ... -
对象的安全构造
2013-06-21 18:43 1501在构造期间,不要公布“this”引用 一种可以将数据争用引 ... -
Java断言(assert)—— 转
2010-06-20 10:36 12028一、概述 在C和C++语言中都有assert关键,表示断言。 ... -
eclipse调试
2010-06-04 00:11 7996eclipse远程调试 在eclipse3.4前,远程调试时 ... -
protected,你真的理解了吗?
2010-05-09 17:56 2079Java中的访问控制修饰符有四个级别,但属protected最 ... -
利用反射进行深层克隆
2010-05-05 21:02 3622最近在看《effective java ... -
类与类之间的几种关系
2010-05-03 13:49 2370类和类、类和接口、接 ... -
运行java
2010-05-03 13:47 1007用javac命令编译一个打包的类时,如果没有加参数" ... -
Java内存模型与volatile
2010-04-25 13:21 18486内存模型描述的是程序 ... -
中断线程
2010-04-24 21:19 8904中断线程 线程的thread.i ... -
java中的关键字、保留字、标示符
2010-04-07 23:48 3324关键字 Java的关键字对java的编译器有特殊的意义, ... -
Java中的浮点数剖析
2010-04-07 23:27 4648定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固 ... -
线程间的同步与互斥
2010-03-23 21:29 2258线程间的同步(实指线程间的通信):一般来说,一个线程相对于另 ... -
UTF-16、UTF-16BE、UTF-16LE编码方式的区别
2010-03-23 21:20 9687import java.io.IOException; ... -
final、finally、finalize
2010-01-22 01:15 2327final关键字 先看看final关键字,它可以被用于以下几个 ...
相关推荐
一、利用Integer将十进制的数进行进制转换 方法 十进制转换其他进制 使用方法 返回值 10进制转2进制 Integer.toBinaryString(n) 一个二进制字符串 10进制转8进制 Integer.toOctalString(n) 一个八进制字符...
通过java中IO流实现对.jpg与最后16进制的读取与写入,中间在利用Integer.toHexString()函数将字节数据转出16进制的数以便于观察。具体实现可将附件.java文件
integer 可以已10进制,8进制,16进制表示。 用八进制表示的时候,数字需要已0(零)开头; 用十六进制表示的时候,数字需要已0x(零x)或者0X(零大写X)开头; integer 溢出: integer溢出的时候,会自动的转化为float...
包含MD5加密,同时拥有多种方式进行byte或者byte[]与16进制相互转换 三种方式: 方式一:Integer.toHexString(int) 对应的是: Integer.parseInt(String, int)或者Integer.valueOf(String, int) 方式二:位运算(& ...
在IBM JDK 8中, java.lang.Integer.toHexString(int)方法有时会返回以nul字符'\u0000'开头的字符串。 目前的项目在那里证明了这个问题。 重现步骤 获得IBM JDK8。我的情况是,确切的版本是 java -version java ...
MD5jar包 源码如下 public class MD5 { ... builder.append( Integer.toHexString( (b >> 4) & 0xf ) ); builder.append( Integer.toHexString( b & 0xf ) ); } return builder.toString(); } }
六角化 十六进制转换工具。 例子: hexify . toHexString ( [ 0x00 , 0xFF , 0x6C , 0x0A ] ) === '00ff6c0a' hexify . toByteArray ( '00ff6c0a' ) === [ 0x00 , 0xFF , 0x6C , 0x0A ]
String ahx=Integer.toHexString(a); String bhx=Integer.toHexString(b); // Log.d("mainAct", ahx+"//"+bhx); String ared=ahx.substring(0, 2); String bred=bhx.substring(0, 2); String agreen=ahx....
数制的转换是利用Integer类的方法实现的,其中将十进制转化为二进制是通过toBinaryString(n)方法实现的,十进制转换八进制是通过toOctalString(n)方法实现的,十进制转换十六进制toHexString(n)方法实现的。
String s = Integer.toHexString(bytes[i] & 0xff); if(s.length()==1){ buf.append("0"); } buf.append(s); } } catch(Exception ex) { } return buf.toString(); }
使用MD5对字符进行加密处理。 public MD5Test(String inStr1) { this.inStr = inStr1; try { this.mad5 = ... hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); }
import java.security.spec.*; import javax.crypto.*;... + java.lang.Integer.toHexString(data[i]&0xFF); else str = str + java.lang.Integer.toHexString(data[i]&0xFF); } return str.toUpperCase(); } } }
String hexString = Integer.toHexString(0x00ff & b); hexRetSB.append(hexString.length() == 1 ? 0 : "").append(hexString); } return hexRetSB.toString(); } catch (Exception e) { throw ...
基本包函数as.double也可以解析Java的toHexString方法生成的十六进制字符串。 # R version 4.0.5 (2021-03-31) -- "Shake and Throw" # # Some examples of R's as.double parsing hex-strings produced by Java's...
首先定义一个简单的类 import lombok.Getter; import lombok.Setter; @Getter @Setter public class HelloMessageGenerator { ... return getClass().getSimpleName() + "@" + Integer.toHexString(hashCode()); } }
public void setId(Integer id) { this.id = id; } public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; } public String getRecver() { ...
《Java就业培训教程》 作者:张孝祥 书中源码 网址:www.itcast.cn 《Java就业培训教程》P34源码 程序清单:Promote.java class Promote { public static void main(String args[]) { byte b = 50; char c ...
strBuf.append(Integer.toHexString(bGBK[i]&0xff;)); } return strBuf.toString(); } public static void main(String[] args) { String cnStr = "安乐死的话嘎的-安徽的法国"; System.out.println(PinYin....
// System.out.println(Integer.toHexString(bGBK[i]&0xff;)); strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } // --------------------------测试拼音转汉字是否正确--...
詹金斯·哈希非加密目的Bob Jenkins哈希的Java实现。 此实现可产生32位和64位哈希值,并可用于哈希表查找。 此处实现的算法是32位体系...System.out.println(Integer.toHexString(pc));参考詹金斯·鲍勃(2006年5月)。