我正在看Apache Commons库中的一段代码,想知道这些条件到底能做什么.

public static byte[] decodeHex(final char[] data) throws DecoderException {

final int len = data.length;

if ((len & 0x01) != 0) { // what does this condition do

throw new DecoderException("Odd number of characters.");

}

final byte[] out = new byte[len >> 1];

// two characters form the hex value.

for (int i = 0, j = 0; j < len; i++) {

int f = toDigit(data[j], j) << 4;

j++;

f = f | toDigit(data[j], j);

j++;

out[i] = (byte) (f & 0xFF); // what is happening here.

}

return out;

}

提前致谢.

解决方法:

这是一种1337(高性能)的编码方式:

if (len % 2 == 1)

即是很奇怪.之所以起作用,是因为每个奇数整数的二进制表示形式都有其最低有效位(即最后一位).用1执行按位与运算将屏蔽所有其他位,如果结果为奇数则为1,如果为偶数则为0.

这是C语言的遗留物,您可以在其中简单地编写代码:

if (len & 1)

标签:java

来源: https://codeday.me/bug/20191013/1907170.html

java 0x0001 表示多少_java-解码十六进制:这行是做什么的(len0x01)!= 0相关推荐

  1. java cmd 返回结果_Java调用cmd命令行并返回执行结果

    命令提示符是在操作系统中,提示进行命令输入的一种工作提示符.在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似 ...

  2. java+cache使用方法_java相关:springboot使用GuavaCache做简单缓存处理的方法

    java相关:springboot使用GuavaCache做简单缓存处理的方法 发布于 2020-3-29| 复制链接 摘记: 问题背景 实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号). ...

  3. vim java自动补全_java – eclim没有在vim中做自动完成

    我安装了eclim并开始运行eclipse无头服务器,就像我用Vim编写代码一样 现在我去了vim,输入了这个, :PingEclim 它显示了这个, eclim 2.4.1 eclipse 4.4. ...

  4. java 对excel 截图_java基于poi实现快速操作Excel的工具[v2.0.0]

    Excel4J v2.0.0 一. v2.0.0新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel ...

  5. java菱形乱码 编码_JAVA:编码与乱码问题

    一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8 ...

  6. Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入

    *4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数.对于不正确的输入数字,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.11 ...

  7. Java 8实现BASE64编解码

    Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...

  8. java 基本类型共享_Java基础数据类型

    第一类:逻辑型boolean boolean类型数据只允许取true或false,不可以0或非0的整数替代true和false,这点和C语言不同 第二类:文本型char char 型数据用来表示通常意 ...

  9. java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园

    请求模拟 package org.zlex.commons.net; import java.io.DataInputStream; import java.io.DataOutputStream; ...

最新文章

  1. Redis 缓存设计原则
  2. mysql基本操作 [http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html]
  3. 如何避免开发一款失败的产品?
  4. 我们为什么要搞长沙.NET技术社区(三)
  5. oracle执行命令显示2,Oracle数据库执行脚本常用命令小结
  6. 第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java
  7. LeetCode 495. 提莫攻击
  8. visual studio code怎么改成中文?Visual Studio Code Insiders for Mac中文修复版
  9. css float属性
  10. BZOJ4428 : [Nwerc2015]Debugging调试
  11. js 清除html页面,如何清除使用JavaScript输入的HTML文件?
  12. win10笔记本电脑耳机没反应,耳机没声音的解决方法
  13. 菜鸟入门_Python_机器学习(1)_线性可分的双月实验
  14. 编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。
  15. 年轻人哪,不能太舒服了
  16. Python制作专属有声小说(调用百度语音合成接口)
  17. 算法总结——大整数乘法
  18. 医学图像处理医学图像处理-卷积神经网络卷积神经网络_基于深度卷积神经网络的刀具磨损量自动提取方法...
  19. App用户协议隐私政策
  20. 看懂了再说自己是程序员哈哈

热门文章

  1. 异常处理——bindtap/catchtap绑定事件冒泡情况
  2. 我的世界电脑正版服务器,我的世界电脑版花雨庭服务器地址 | 手游网游页游攻略大全...
  3. mysql时间戳格式转换日期格式字符串
  4. pytorch 读取数据集(LiTS-肝肿瘤分割挑战数据集)
  5. 我的创作两周年纪念日
  6. POI导出Excel设置背景色踩坑,解决背景色全黑(无效)的问题及指定列添加背景色,自定义颜色
  7. 什么是有机硅胶 有机硅胶具有哪些显著特性
  8. ubuntu给用户添加sudo权限
  9. D2 Admin 关于主动关闭tab标签
  10. BAT命令,重启某个应用示例