**

bytes[i] & 0xf0是如何运算的

**
StringUtil类:

public class StringUtil {/** 16进制数字字符集*/private static String hexString="0123456789ABCDEF";/** 将字符串编码成16进制数字,适用于所有字符(包括中文)*/public static String encode(String str){//根据默认编码获取字节数组byte[] bytes=str.getBytes();StringBuilder sb=new StringBuilder(bytes.length*2);//将字节数组中每个字节拆解成2位16进制整数for(int i=0;i<bytes.length;i++) {sb.append(hexString.charAt((bytes[i]&0xf0)>>4));sb.append(hexString.charAt((bytes[i]&0x0f)>>0));}return sb.toString();}

这个类中的bytes[i]&0xf0)>>4和bytes[i]&0x0f)>>0是什么意思啊,谁知道的能不能举个例子解释一下,谢谢。。。

------解决方案--------------------
byte呢是一个字节,也就是8位,如:0010 0100
而0xf0呢,也是8位:1111 0000
而byte&0xf0呢,就是按位与操作(0&1=0,0&0=0,1&1=1),这样呢就得到0010 0000这样八位表示的字节,
然后">>4"操作是向右移四位,最高位用0补,就得到0000 0010。
ok,就说这么多了。

例子:

byte byte62 = (byte)((0x21 & 0xF0));
byte byte62 = (byte)((0x20& 0xF0));
System.out.println(byte62);----得到的都是32 (byte)((0x22 & 0xF0)>>4);
(byte)((0x20 & 0xF0)>>4);
-----得到的都是2

bytes[i] 0xf0是怎么运算的相关推荐

  1. 01 Python学习--第一周--开课介绍、数据类型、数据运算、表达式、循环、三元运算、对象基本概念...

    模块一主要内容 开课介绍 python发展介绍 第一个python程序 变量 字符编码与二进制 字符编码的区别与介绍 用户交互程序 if else流程判断 while 循环 while 循环优化版本 ...

  2. Android安全加密:消息摘要Message Digest

    Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名 ...

  3. java中的进制输出转换_java中进制的转换,Byte与16进制的转换

    java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十 ...

  4. 二进制十六进制相互转换

    使用Java自带的转换方法也可以但是会有如下情况发生: Integer.toBinaryString(Integer.valueOf("0020",16)).---java自封装的 ...

  5. 国密算法 SM4 对称加密 分组密码 python实现完整代码

    目前,python实现的国密算法库主要是python-gmssl库和snowland-smx(pysmx)库,二者都对SM2(仅公钥加解密和数字签名).SM3.SM4进行了细致而优雅的实现. GMSS ...

  6. planet_Earth靶场渗透记录

    planet_Earth 靶场渗透记录 一.线索资料 1.拿到靶机IP 还从一个逗比那里学了一招,windows中cmd arp -a //也可以拿到靶机IP,前提是两者有交互 A B Kali ? ...

  7. Java中二进制与十六进制的转换

    Java开发过程中,我们常会需要将二进制数组转换为字符串.Spring的工具类DegistUtils提供了相关的方法,那具体的原理是啥呢?其实字符串和字节的转换,关键在于如何取出字节的高四位和低四位. ...

  8. java 3des解密过程_6. Java 加解密技术系列之 3DES

    importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importj ...

  9. RSA加解密算法的Java实现

    main()方法: public static void main(String[] args) throws Exception {// TODO Auto-generated method stu ...

最新文章

  1. 小程序云开发常用语句宝库
  2. Netty 源码(ChannelHandler 死磕)
  3. 深入理解ElasticSearch(七):执行分布式检索
  4. TCP四次握手释放连接
  5. shiro学习(23):动态添加验证规则3
  6. TortoiseGit 冲突和解决方案_入门试炼_07
  7. M1芯片Mac也可以安装Windows系统啦 使用PD16虚拟机安装ARM版Windows10教程
  8. Oracle表空间大小的限制和DB_BLOCK_SIZE的概念
  9. 事务回滚什么意思 try_Spring事务管理(一)快速入门
  10. c语言fread参数,C语言fread函数
  11. 无法保存此文档。它可能是只读的,或者正在被其他应用程序使用
  12. ps考证是人改分的还是电脑
  13. python中stack.stack_Python stack
  14. c语言中calc是什么函数,CSS 3 中的计算函数 calc() 有啥用?
  15. java 判断图片合适,Java 判断图片色彩
  16. 【AI绘画】二次元小姐姐生成!春节版!
  17. https://www.toutiao.com/a6457425756212429325/?tt_from=mobile_qqutm_campaign=client_shareapp=news_a
  18. Orangepi 5 Unixbench基准测试结果
  19. 二叉树面试题:前中序求后序、中后序求前序
  20. 徐佳计算机教授,计算机与软件学院第六届ECNU Coder程序设计竞赛成功举办

热门文章

  1. Dataguard搭建问题小记
  2. 为什么需要PSD转换成html,选择PSD转换为HTML的主要原因
  3. ZZULIOJ1061-1070
  4. Python多线程爬取表情包,代码都放在最后了
  5. 供应链|多期库存系统中具有销售损失的最优联合补货和转运策略
  6. 终极求生手机(待机15年的)
  7. go http.Post 指定 body 单次读取的大小(32k?)
  8. IDEA 一定要改的8条配置
  9. 类中一定要有主方法吗?
  10. 3、Mac下的Go2Shell的安装与配置