Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6)解释

Microchip Studio 7.0 从零开始:下载、安装到首个AVR工程实战 本文为AVR单片机开发新手提供了Microchip Studio 7.0的完整入门指南。从官方下载、避坑安装,到创建首个GCC C工程、编写LED闪烁代码,再到项目配置、仿真调试与程序烧录,手把手带你完成从零到一的实战过程,是掌握AVR开发环境的必备教程。 阅读详情

为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用:

Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6)

byteVar & 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(...) | 0xFFFFFF00的作用是,如果byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样可以通过substring方法进行截取最后两位即可。

package des;

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    
    }   
}


转自 http://hi.baidu.com/slandi/blog/item/f7b77008e8fb78c13ac7633a.html

【数字孪生与仿真技术】10:半导体制造中的虚拟量测技术深度解析:从多尺度建模到工业级应用 摘要:半导体制造过程中,晶圆加工需实时监测300+关键参数,传统物理量测技术面临产能损耗、延迟检测等痛点。本文系统阐述虚拟量测(Virtual Metrology)技术的完整解决方案,通过多尺度混合建模实现物理机理与数据驱动的深度融合。内容涵盖等离子体刻蚀、薄膜沉积等关键工艺的物理模型构建,LSTM神经网络的数据校正算法,以及边缘-云协同的实时部署架构。某12英寸晶圆厂实践表明,虚拟量测技术可减少70%物理量测频次,异常漏检率从18%降至3%,机台利用率提升11%。 阅读详情

相关推荐

Keil MDK打开别人工程总报错?手把手教你修复‘找不到main.o’和‘未定义’的路径问题

本文详细解析Keil MDK工程移植时常见的'找不到main.o'和'未定义'编译错误,提供从路径修复到宏定义配置的完整解决方案。通过系统化的检查清单和预防措施,帮助开发者快速解决MDK工程迁移问题,提升嵌入式开发效率。

weixin_28724661的博客 397

分解32位数值的方法

<br />java里 0x000000ff的意思就相当于全部转化为二进制之后再进行"与"运算 & 0x000000ff直接作用就是只保留最后8位(一个16进制位是4个2进制位),屏蔽掉前面的数字 <br /> <br />例如:<br />          int pixData = bmp.getPixel(x, y);<br />          array[index++] = (byte)(pixData & 0x000000FF); //取得pixData 的最后8位<br />      

sunmoon631的专栏 1036

BCIC IV 2a数据集实战:从MATLAB导入到EEG信号分析全流程

本文提供了BCIC IV 2a数据集从MATLAB导入到EEG信号分析的完整实战流程。详细解析了数据集结构,区分了EEG与EOG信号,并演示了信号可视化、基础预处理(滤波、分段、基线校正)等关键步骤,帮助脑机接口研究者快速上手处理这一经典运动想象数据集。

weixin_29047919的博客 468

编程知识_字节序_位操作

1. 字节序 额外的小知识 1Tbyte=1024Gbyte, 1Gbyte=1024Mbyte, 1Mbyte=1024Kbyte,(1Mb=1024x1024个字节) 1Kbyte=1024byte, (1KB=1024个字节) 1byte=8bit(一个字节由8个二进制位组成) int i;int类型占4个字节就是4x8=32个bit位(最大可表示的数为2^31-1=2147483647) double i;double类型占8个字节就是8*8=64个bit位(最大可表示的数为2^63-1) 另外:

果果小师弟的博客 1702

解决SolidWorks启动报错问题:SolidWorks2020显示无法获得下列许可 SolidWorks standard 期望的SolidWorks监控程序已经关闭(-97,121,0)

解决SolidWorks启动报错问题:SolidWorks2020显示无法获得下列许可 SolidWorks standard 期望的SolidWorks监控程序已经关闭(-97,121,0) 问题描述 打开SolidWorks2020时,显示SolidWorks2020显示无法获得下列许可 SolidWorks standard 期望的SolidWorks监控程序已经关闭(-97,121,0) (急需看模型的我心里万马奔腾…) 截图如下: 有问题咱就上 看了其他博主的回答,自己尝试了几个,发现出现了新的

qq_44606358的博客 7万+

【SpringBoot 3.x 第51节】带你玩转 GraalVM Native Image:启动快到飞起,内存省到心疼,你还不试试?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1304

常见颜色表示方式

颜色组成这些原理不用讲了,度娘就行,之讲讲常见的表示方式 一、单词表示法: 英文单词表示法,这个还需要讲吗?如:red,yellow,blue 二、16进制表示法 16进制表示的方法分为两种: 1. 以”0x“开头表示,这种表示方法才是标准的16进制的表示方法。例如“0x00ffffff”或&quot;0xffffff&quot; 2.以“#”开头表示,...

ai520587的博客 1万+

《Android最全面试题-Offer直通车》目录

如今Android求职是僧多粥少,竞争非常激烈,企业招聘时要求很高,本专栏汇聚android面试各种考点,各大公司Android面试题,《Android 最全面试题》将助你全方位提升,助您脱颖而出,早日拿到满意Offer。本专栏汇聚了海量优质内容,文章数量超过100 篇。凭借过硬的质量,每月新增订阅用户数以百计,如今仅需特惠价 9.9 元,限时抢购,后续将逐步恢复原价,早订阅早开启逆袭之旅。精心筹备,整理出一系列超万字精华篇章,累计数十万的 Android 面试题深度剖析。

大模型大数据攻城狮的专栏 2860

关于c语言数据类型的小笔记

关于c语言数据类型的小笔记 同学今天问了我一个很基础的问题,却让我发现了自己在c语言基础上依旧存在着很多漏洞。 先上图 这里主要讨论前三对的输出结果 首先一个非常重要的点必须要记住,计算机只能识别0和1(高低电平),将此作为前提来思考会更加有助于理解。 数值在计算机中以补码的形式保存。那么例子中,-1为signed int型的值,补码是0xFFFFFFFF. 第一组中 将signed in...

shen962806862的博客 644

DICOM图像知识:深入详解DICOM的层级关系

解析DICOM的四个主要层级:Patient(患者)、Study(检查)、Series(序列)和SOP(服务-对象对),探讨它们之间的关系、各自的唯一标识符以及在实际应用中的用途

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3304

支付域——账户系统设计

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

庄小焱 1186

java中byte转换int时为何与0xff进行与运算

java中byte转换int时为何与0在剖析该问题前请看如下代码     在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) { String ret = &quot;&quot;; for (int i = 0; i &amp;lt; b.length; i++) { String hex = Integ...

chhj_292 866

【Windows Server 2019】活动目录 (Active Directory) ——将计算机加入域和脱离域

博文介绍了如何将计算机加入AD域和脱离AD域,包括加入域,验证客户机加入到域后的信息,使用域账户用户在客户机上登录,使用本地账户用户在计算机上登录,脱离域。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6169

C# byte[]转十六进制字符串只需要一行代码 - CodePlus系列

【C#】一行代码解决:byte数组转十六进制字符串。 STTech.CodePlus是一款针对基础类型的.NET扩展库。本系列将演示如何使用CodePlus来解决实际项目中的小问题以及简化开发、精简代码。

猿长大人 2006

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#编程,常用进制转换

最近的工作中,需要接触到一些硬件设备,处理这些设备的通讯,因此需要进行一些进制的转换。 其实,二进制、十六进制这些基本的知识,在我们刚学编程的时候,基础课应该已经讲过的了。但是,包括我自己在内,当时也仅仅是知道一般的换算规则,但是具体怎么应用,在c#中又是如何表示,也是近期才有比较深的体会。 具体的知识,各位就自己查看相关的基础知识了,这里我只给出自己在工作中的体会和实际的类库。 首先,先解释下C#的类型。一般,我们常用的有 byte、short、int(Int32)、long(Int64)..

君一席 1736

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an &ldquo;advanced algorithms&rdquo; book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c#中字节和编码

一 字节和编码基础 1.1字节 字节是二进制数据的单位,一个字节通常为8位二进制数字序列。字节通常简写为“B”,而位通常简写为小写“b”,计算机存储器的大小通常用字节来表示。 1.2编码 涉及到字符集和编码 ASCII字符集:一个英文字母(不分大小写)占一个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数。换算为十进制,最小值-128,最大值127。一个ASCII...

jinjap的博客 1245

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# byte[] 转换hex(16进制字符串)

1.byte[] 转换hex(16进制字符串) 1.1 BitConverter方式 var str = DateTime.Now.ToString(); var encode = Encoding.UTF8; var bytes = encode.GetBytes(str); ...

diaomen1607的博客 1万+

关于c++中位运算&0xff的一些理解

在vs编译器中,当我们对一个值进行&0xff操作时,其实并不是与一个字节进行操作,默认的,当我们对一个字节进行0xff操作时,编译器首先会将0xff赋给一个整型的临时变量,这时候进行运算的就不是一个字节了,而是一个0x000000ff,四个字节,这时候得到的结果也就不是一个字节了,而是一个四字节的临时变量。         这样不仅可以用来进行取低八位,而且可以将有符号单个字节的值按照无符号转换

仰望星空 9088

byte为什么要与上0xff(转)

  无意间翻看之间的代码,发现了一段难以理解的代码。 byte[] bs = digest.digest(origin.getBytes(Charset.forName(charsetName))) ; for (int i = 0; i &amp;lt; bs.length; i++) { int c = ...

weixin_34336526的博客 1108

获取字节

获取字节 通过数据移位操作获取字节 #include &lt;stdio.h&gt; typedef unsigned int uint32_t; #define GET_BYTE_0(x) ((x &gt;&gt; 0) &amp; 0x000000ff) #define GET_BYTE_1(x) ((x &gt;&gt; 8) &amp; 0x000000ff) #define GET_BYTE_2(x) ((x &gt;&gt; 16) &amp; 0x000000ff) #define

weixin_43290957的博客 561

Android颜色表

 【转】Android程序颜色表 请看第一条留言    注意小事项  呵呵   编号   常数      颜色               色码              色图 1     BLACK      黑                 0xff000000 2     BLUE       蓝                 0xf

wy1987_708的专栏 2560

关于0xffffff的简单讲解!!

如果是32位机器的话,在内存里面的存储形式就是这样的! 其中0x表示16进制,f在16进制中就表示十进制数15,这样0xffffff就表示一个16进制的数fffffff,例如: 0xf就表示16进制的f,也就是10进制的15. 0xff就表示16进制的ff,也就是10进制的(15*16+15)。此外,0xffffff和0x00ffffff 也是一样的! 测试实例: #...

weixin_30391339的博客 4038

颜色的表示

颜色表示 ARGB(一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构)A 是alpha值,称为颜色强度,范围为0-255的十进制数的16进制数表示,0xFF表示全强度(255),00指通道中无颜色即0,ARGB定义了四个颜色通道,0xFFFFFFFF代表各个通道都是全强度,为白色,0xFF000000代表黑色,在红、绿、蓝三种颜色均没有颜色,请注意

→お詠℃遠シ 1622

c语言中怎么把字节补0,x的最低有效字节全变为0,其余各位取反,写出它的c语言表达式...

x &amp;= 0xffffff00;x ^= 0xffffff00;END例如:a为int类型 通常占4个字节2的原码:0000 0000 0000 0000 0000 0000 0000 0010取反: 1111 1111 1111 1111 1111 1111 1111 1101最高位是1所以是负数,求其原始数据,方法是再次取反加1(符号位不变)取反: 1000 0000 0000 000...

weixin_39875842的博客 1496

开机后的第一条指令0xFFFFFFF0

可以参考文章:https://blog.csdn.net/u010383242/article/details/50586782

yangyang的专栏 2254

UEFI学习--CPU第一条指令地址0xFFFFFFF0

当有Power up或者是CPU RESET#有拉,CPU registers就会变成一个已知的状态并且CPU进入real-address mode. 这个时候一些寄存器里的值就会固定. 下图是从IA32 SPEC里截下来的.可以看出EIP = 0000F000H. CR0 = 60000010H.从CR0也可以看出这个时候是real-address mode(BIT0).

Sword 3389
上一篇: PowerDesigner心得 转自http://blog.youkuaiyun.com/zclzzz/article/details/5915779
下一篇: http://commons.apache.org/email/userguide.html 关于javamail
java_freshman01
博客等级 码龄17年 22粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值