Java字符串转16 进制工具类Hex.java

java_16进制工具类 16进制工具类 阅读详情

原文:Java字符串转16 进制工具类Hex.java

源代码下载地址:http://www.zuidaima.com/share/1550463378410496.htm

Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后再将 md 之后的数据 hex 一下。 这个工具类,就是实现此效果的。

	    				
/*
 *
 */
package com.zuidaima.haohui.common.utils;

/**
 * <pre>
 * 16进制值与String/Byte之间的转换 
 * @author JerryLi 
 * @email lijian@dzs.mobi 
 * @data 2011-10-16 
 * http://blog.youkuaiyun.com/hzbigdog/article/details/6877712
 * 
 * http://www.blogjava.net/lijinglin/archive/2011/11/02/362567.html
 * </pre>
 * 
 * @project baidamei
 * @author www.zuidaima.com
 * @create 2012-11-14 下午5:53:14
 */
public class Hex {
	/**
	 * 字符串转换成十六进制字符串
	 * 
	 * @param String
	 *            str 待转换的ASCII字符串
	 * @return String 每个Byte之间空格分隔,如: [61 6C 6B]
	 */
	public static String str2HexStr(String str) {

		char[] chars = "0123456789ABCDEF".toCharArray();
		StringBuilder sb = new StringBuilder("");
		byte[] bs = str.getBytes();
		int bit;

		for (int i = 0; i < bs.length; i++) {
			bit = (bs[i] & 0x0f0) >> 4;
			sb.append(chars[bit]);
			bit = bs[i] & 0x0f;
			sb.append(chars[bit]);
			sb.append(' ');
		}
		return sb.toString().trim();
	}

	/**
	 * 十六进制转换字符串
	 * 
	 * @param String
	 *            str Byte字符串(Byte之间无分隔符 如:[616C6B])
	 * @return String 对应的字符串
	 */
	public static String hexStr2Str(String hexStr) {
		String str = "0123456789ABCDEF";
		char[] hexs = hexStr.toCharArray();
		byte[] bytes = new byte[hexStr.length() / 2];
		int n;

		for (int i = 0; i < bytes.length; i++) {
			n = str.indexOf(hexs[2 * i]) * 16;
			n += str.indexOf(hexs[2 * i + 1]);
			bytes[i] = (byte) (n & 0xff);
		}
		return new String(bytes);
	}

	/**
	 * bytes转换成十六进制字符串
	 * 
	 * @param byte[] b byte数组
	 * @return String 每个Byte值之间空格分隔
	 */
	public static String byte2HexStr(byte[] b) {
		String stmp = "";
		StringBuilder sb = new StringBuilder("");
		for (int n = 0; n < b.length; n++) {
			stmp = Integer.toHexString(b[n] & 0xFF);
			sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
//			sb.append(" ");
		}
		return sb.toString().toUpperCase().trim();
	}

	/**
	 * bytes字符串转换为Byte值
	 * 
	 * @param String
	 *            src Byte字符串,每个Byte之间没有分隔符
	 * @return byte[]
	 */
	public static byte[] hexStr2Bytes(String src) {
		int m = 0, n = 0;
		int l = src.length() / 2;
		System.out.println(l);
		byte[] ret = new byte[l];
		for (int i = 0; i < l; i++) {
			m = i * 2 + 1;
			n = m + 1;
			ret[i] = Byte.decode("0x" + src.substring(i * 2, m) + src.substring(m, n));
		}
		return ret;
	}

	/**
	 * String的字符串转换成unicode的String
	 * 
	 * @param String
	 *            strText 全角字符串
	 * @return String 每个unicode之间无分隔符
	 * @throws Exception
	 */
	public static String strToUnicode(String strText) throws Exception {
		char c;
		StringBuilder str = new StringBuilder();
		int intAsc;
		String strHex;
		for (int i = 0; i < strText.length(); i++) {
			c = strText.charAt(i);
			intAsc = (int) c;
			strHex = Integer.toHexString(intAsc);
			if (intAsc > 128)
				str.append("\\u" + strHex);
			else
				// 低位在前面补00
				str.append("\\u00" + strHex);
		}
		return str.toString();
	}

	/**
	 * unicode的String转换成String的字符串
	 * 
	 * @param String
	 *            hex 16进制值字符串 (一个unicode为2byte)
	 * @return String 全角字符串
	 */
	public static String unicodeToString(String hex) {
		int t = hex.length() / 6;
		StringBuilder str = new StringBuilder();
		for (int i = 0; i < t; i++) {
			String s = hex.substring(i * 6, (i + 1) * 6);
			// 高位需要补上00再转
			String s1 = s.substring(2, 4) + "00";
			// 低位直接转
			String s2 = s.substring(4);
			// 将16进制的string转为int
			int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);
			// 将int转换为字符
			char[] chars = Character.toChars(n);
			str.append(new String(chars));
		}
		return str.toString();
	}
	public static void main(String[] args) {
		String hex = "ef2c71b29202f3e642f2abd8d518f367ec3fbf6a6a61beb678ae0c871ee368ac";
		System.out.println(Hex.hexStr2Str(hex));
	}
}

 

PlatformIO串口监视器波特率配置实战:从乱码到清晰输出的关键步骤 本文针对PlatformIO串口监视器常见的乱码问题,深入解析了其根源在于波特率不匹配。文章核心在于指导开发者通过修改项目根目录下的platformio.ini配置文件,正确设置monitor_speed参数,确保与代码中Serial.begin()的波特率一致,从而实现从乱码到清晰输出的关键步骤。此外,还介绍了其他实用的串口监控配置与常见避坑指南。 阅读详情

相关推荐

深入理解HanLP1.x,填平可能遇到的坑

提取指定数量的摘要。自定义词典为什么要单独领出来讲呢?因为在我们的业务开发中,可能分词的效果并不理想,需要定制自己的词库,索引更加常用。例如:小米su7特斯拉modelY比亚042025款6575767670908我们需要分出小米su72025款等词。我们分别看看用字典和不用字典的效果。

static_coder的博客 980

java常用数据类型转换工具类

【代码】java常用数据类型转换工具类。

shi450561200的博客 1254

HALCON深度学习模型部署新选择:一份详细的OpenVINO 2021.4 LTS集成与配置避坑指南

本文详细介绍了如何将HALCON深度学习模型与OpenVINO 2021.4 LTS集成,提供环境配置、硬件加速优化及故障排除的实用指南。特别针对Intel独立显卡的AI加速器接口进行优化,帮助机器视觉工程师提升AI推理效率,适用于工业检测等高要求场景。

weixin_42531779的博客 239

base64 hex java_Java 中的 BASE64 和 十六进制转换器

使用Java中的JCA(Java Cryptography Architecture)做加密、解密、签名、验签、消息摘要等操作时,由于它们的输出和输入大多是byte数组,对于数据的存储交换不是太友好。平常的使用习惯,一般是转换成十六进制或Base64编码进行存储和交换。在网上搜索有关java中Base64和十六进制转码工具时,发现很多开发者自己写了转换工具。what ? 难道jdk中没有现成的吗?...

weixin_34723479的博客 2768

保姆级教程:用R语言自动化处理FAERS季度数据(从文件合并到删除废弃Case)

本文提供了一份详细的R语言教程,指导如何自动化处理FAERS季度数据,包括文件合并和删除废弃Case。通过使用tidyverse、fs等R包,构建健壮的自动化流程,特别适合药物安全监测领域的数据分析师。教程涵盖环境准备、智能合并多季度数据、精准删除废弃Case等关键步骤,并提供了错误处理与日志记录的实用技巧。

weixin_42701915的博客 127

【深度解析】信息素养提升实践活动(附:历年获奖作品分析)

全国师生信息素养提升实践活动是由教育部教育技术与资源发展中心(中央电化教育馆)主办,面向全国师生的一项信息化交流展示活动。

m0_74417957的博客 2631

Java中一种高效的 字符串转十六进制的 方法

字符串转十六进制,高效

northcastle的博客 1468

73、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪

搭建仿真转换模型环境,主要python版本和我下载的rknn2的版本。截取shape节点,输出模型。so库也要对应转模型的whl。其中安装的whl版本。

sxj731533730 1625

java int to hex_Java字符串转16 进制工具类Hex.java | 学步园

Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后再将 md 之后的数据 hex 一下。 这个工具类,就是实现此效果的。/***/package com.zuidaima.haohui.common.utils;/*** * 16进制值与String...

weixin_39630440的博客 423

【异常】OpenClaw总Token超限400报错400 Total tokens of image and text exceed max message tokens. Request id:

摘要: 多模态大模型调用中,图文总Token超限导致的400报错是常见问题。本文分析了该报错的触发原因(文本+图片Token总和超出接口限额),并从技术层面解释了多模态Token的计数规则。解决方案分为三个层次:1)紧急修复(精简文本、压缩图片、拆分请求);2)标准化根治(预校验Token、图片预处理、限额适配);3)进阶兜底(分块处理、模型升级、容错机制)。通过前置管控与源头优化,可有效解决并预防此类问题,提升业务稳定性。

奶爸的编程之路,也就一周冷个三天 833

高温环境下(100℃以上)相机的几种保障方案

高温环境下相机保障措施摘要:针对120℃以上高温环境,相机需采取多重防护:1.散热设计采用金属机身、散热鳍片或风扇;2.关键部件选用耐高温材料(铝合金、特种玻璃);3.电子元件需军规级芯片并做三防处理;4.建议外接电源或耐高温电池。工业相机(如FLIR A655sc、Basler ace)及特种机型(Ximea xiQ)具备高温适应性,普通相机可加装隔热套件配合冷却系统。选择时需关注传感器信噪比和全局快门性能,并设置温度监控保护机制。注意高温会加速设备老化,需定期检测维护。(149字)

start_up_go的博客 1590

java十进制转十六进制_Java十进制十六进制转换

因项目需求,这里的16转10进制采用的是一段byte[]数组中存放的16进制批量转换成10进制,如果只是少量16转10,则直接调用以下代码即可long decNum = Long.parseLong("FFFF", 16);// 输出结果为65535工具类代码如下:public class StringUtil {/*** 16进制转10进制** @param bytes* @return*/pu...

weixin_33673142的博客 1888

基于Simulink的PID控制器自动驾驶仿真建模示例

本文通过Simulink仿真平台,详细讲解了基于PID控制器的自动驾驶路径跟踪实现方法。主要内容包括:1)建立自行车运动学模型作为被控对象;2)定义参考路径与横向误差计算方法;3)设计PD控制器并调试参数;4)在Simulink中搭建完整仿真模型;5)分析30km/h车速下的双移线跟踪性能。文章强调PID控制作为自动驾驶入门基础的重要性,并指出其在中低速场景下的适用性,同时给出了工程实践中的优化建议(如前视距离、抗积分饱和等)和扩展方向(如Stanley控制器)。通过完整案例,帮助读者掌握车辆运动学建模和P

xiaoheshang_123的博客 65

java 16进制_JAVA 十六进制与字符串的转换

笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码经过考虑决定通过以下方式进行解决:1)在将字符串转为16...

weixin_39985365的博客 3595

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java 16进制转字符串 乱码_Java中16进制与字符串之间的相互转换

笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码经过考虑决定通过以下方式进行解决:1)在将字符串转为16进制之前先进行一次转化,先将其转化成为Unicode编码(相当于把中文用英文字符代替),在转化成为16进制2)相反的,在十六进制转换为字符串后的得到的是Unicode编码,...

weixin_30923925的博客 3366

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java 转16进制_Java 字符串、数值与16进制相互转化

字符串、数值与16进制相互转化首先创建一个工具类:package c;public class DataUtils {/** 字节数组转16进制字符串*/public static String bytesToHexString(byte[] bArr) {if (bArr == null) {return null;}StringBuffer sb = new StringBuffer(bArr...

weixin_36422050的博客 1177

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java InputStream转byte[],byte[]转16进制字符串 ,16进制字符串转acsii码字符串

//接收1:将InputStream先转为byte【】, public static final byte[] input2byte(InputStream inStream) throws IOException { ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byt...

hujiameihuxu的专栏 2365

16进制字符串 和 文本字符串 相互转换的工具类

/** * 16进制字符串 和 文本字符串 相互转换的工具类 */ public class HexStringUtil { /** 16进制能用到的所有字符 */ private static String hexCharsStr = "0123456789ABCDEF"; /** 16进制能用到的所有字符数组 */ private ...

weixin_30563917的博客 1311

java 16进制字符串转base64_16进制字符串,byte[] ,base64三者之间的转换

packagecom.lgdz.qydevice.utils;importcn.hutool.core.codec.Base64;importcn.hutool.core.util.CharsetUtil;importcn.hutool.core.util.HexUtil;importsun.misc.BASE64Decoder;public classHexstringToByteUtil {p...

weixin_28757113的博客 3339

JAVA 进制转换工具类 10进制转16进制 10进制转2进制 16进制转2进制 16进制10进制 2进制转10进制 2进制转16进制

进制转换的坑: 注意:使用Integer的方法转换出来的2进制字符串 最高位是没有补零的 ,java的Integer类的toBinaryString()方法转换出来的二进制字符串只会保留最高非零位以后的字符串,不满int类型的32位,所以需要补零。 /** * @Description: 将2进制补位32位 * @Param: [binary] * @return...

qq_28021299的博客 1847

java 转16进制字符串 hex

java 转16进制字符串 hex

global_coding的博客 1930

Java 16进制字符串 取反

目的:对java 数字字符串进行取反 步骤:现将java数字字符串转化为二进制byte 然后对二进制byte进行取反 在把byte转化为16进制字符串。 直接贴代码: public static void main(String[] args) { String javaStr="10270000"; byte [] bytes = hexStringT...

xueshenghu的专栏 3820

Java进制转换工具类详解:从十进制到任意进制的轻松转换

本文主要写进制转换的工具类和二进制相加的算法。具体的各个进制转换的方法讲解见上一篇:。

爱媳妇儿爱编程 3004
上一篇: java高仿微博日期显示格式化,日期辅助工具类
下一篇: java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java
springmvc_springdata
博客等级 码龄12年 197粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值