一文搞清楚Java BytesToAscii和AsciiToBytes

文章目录

  • BytesToAscii
  • AsciiToBytes
    • 10进制和16进制byte对比
  • bytes2HexString和hexStringToBytes
    • 测试

BytesToAscii

 @Testpublic void convertBytesToAscii() {byte[] bytes = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 };String asciiString = new String(bytes);System.out.println("asciiString = " + asciiString);}
 asciiString = 12345

在这里插入图片描述

在这里插入图片描述

AsciiToBytes

    @Testpublic void convertAsciiToBytes() {String asciiString = "12345";byte[] result = new byte[asciiString.length()];for (int i = 0; i < asciiString.length(); i++) {result[i] = (byte) asciiString.charAt(i);}System.out.println("result = " + Arrays.toString(result));}
result = [49, 50, 51, 52, 53]

由于 Arrays.toString()默认输出的是十进制,二前面我们输入的是十六进制,这样看起来不太顺眼。所以换一个输出:

 public static String byteArrayToHexString(byte[] bytes) {StringBuilder hexString = new StringBuilder();for (byte b : bytes) {hexString.append(String.format("%02X", b));}return hexString.toString();}
result = 3132333435

10进制和16进制byte对比

  public void compareBytes() {byte b1 = 0x31;byte b2 = 49;System.out.println("b1 = " + b1);System.out.println("b2 = " + b2);System.out.println("compare b1 b2 = " + (b1 == b2));byte[] bytes1 = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 };byte[] bytes2 = new byte[] { 49, 50, 51, 52, 53 };System.out.println("bytes1 = " + Arrays.toString(bytes1));System.out.println("bytes2 = " + Arrays.toString(bytes2));System.out.println("compare bytes1 bytes2 = " + (bytes1 == bytes2));}
b1 = 49
b2 = 49
compare b1 b2 = true
bytes1 = [49, 50, 51, 52, 53]
bytes2 = [49, 50, 51, 52, 53]
compare bytes1 bytes2 = false

bytes2HexString和hexStringToBytes

   private static final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);/*** convert byte array to hex string* 0x31, 0x32, 0x33, 0x34, 0x35, 0x36 -> "313233343536"*/public static String bytes2HexString(byte[] bytes) {byte[] hexChars = new byte[bytes.length * 2];for (int j = 0; j < bytes.length; j++) {int v = bytes[j] & 0xFF;hexChars[j * 2] = HEX_ARRAY[v >>> 4];hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];}return new String(hexChars, StandardCharsets.UTF_8);}
/*** convert byte array to hex string* "313233343536" ->  0x31, 0x32, 0x33, 0x34, 0x35, 0x36*/public static byte[] hexStringToBytes(String hexstr) {int len = (hexstr.length() / 2);byte[] result = new byte[len];char[] achar = hexstr.toCharArray();for (int i = 0; i < len; i++) {int pos = i * 2;result[i] = (byte) (((byte) "0123456789ABCDEF".indexOf(achar[pos])) << 4| (((byte) "0123456789ABCDEF".indexOf(achar[pos + 1]))) & 0xff);}return result;}

测试

  @Testpublic void bytes2Hex() {byte[] bytes = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 };System.out.println("bytes = " + Arrays.toString(bytes));String bytes2HexString = ConvertUtils.bytes2HexString(bytes);System.out.println("bytes2HexString = " + bytes2HexString);byte[] hexStringToBytes = ConvertUtils.hexStringToBytes(bytes2HexString);System.out.println("hexStringToBytes = " + Arrays.toString(hexStringToBytes));}
bytes = [49, 50, 51, 52, 53]
bytes2HexString = 3132333435
hexStringToBytes = [49, 50, 51, 52, 53]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你怎么看待软件测试这个工作的?转行真的甘心吗!

先说一个插曲&#xff1a;上个月我有同学在深圳被裁员了&#xff0c;和我一样都是软件测试&#xff0c;不过他是平安外包&#xff0c;所以整个组都撤了&#xff0c;他工资和我差不多都是14K。 现在IT互联网已经比较寒冬&#xff0c;特别是软件测试&#xff0c;裁员先裁测试&am…

KaiwuDB 时序引擎数据去重功能详解

一、背景介绍 随着物联网领域的快速发展&#xff0c;时序数据的产生和处理需求不断增长。时序数据是按照时间顺序收集和记录的数据&#xff0c;其特点在于数据具有时间戳&#xff0c;并且时间是数据分析和查询的一个重要维度。 在实际场景中&#xff0c;可能存在多条相同时间…

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

分支限界法求解01背包(优先队列)【java】

实验内容&#xff1a;运用分支限界法解决0-1背包问题 实验目的&#xff1a;分支限界法按广度优先策略遍历问题的解空间树&#xff0c;在遍历过程中,对已经处理的每一个结点根据限界函数估算目标函数的可能取值&#xff0c;从中选取使目标函数取得极值的结点优先进行广度忧先搜…

python 面试题第一弹

1. 如何理解Python中的深浅拷贝 浅拷贝&#xff08;Shallow Copy&#xff09;创建一个新的对象&#xff0c;该对象的内容是原始对象的引用。这意味着新对象与原始对象共享相同的内存地址&#xff0c;因此对于可变对象来说&#xff0c;如果修改了其中一个对象&#xff0c;另一个…

Echarts随机生成颜色

Echarts生成随机颜色&#xff0c;并且不要黑色、灰色、棕色等难看的颜色&#xff0c;暖色系并且颜色亮丽&#xff0c; 可以通过修改saturation 和lightness 的随机数值&#xff0c;提高颜色饱和度和亮度 function generateWarmColor() {let hue Math.floor(Math.random() * 3…

arcpy获取矢量坐标系

代码&#xff1a; shppath "矢量路径" shpdescribe arcpy.Describe(shppath) print(shpdescribe.spatialReference.name) 结果&#xff1a;

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.袋獾算法4.实验参数设定5.算法结果6.参考文献7.MA…

人工智能_机器学习078_聚类算法_概念介绍_聚类升维_降维_各类聚类算法_有监督机器学习_无监督机器学习---人工智能工作笔记0118

首先看一下什么是聚类,我们可以进入sklearn的官网去看看 可以看到这里,首先classification 这个分类我们学完了,然后就是regression回归我们也学完了对吧,其实我们现实生活中的,大部分问题就是 这两种问题就可以解决了. 然后我们再来看一个: clustering,这个就是聚类对吧.聚类算…

【Linux驱动】最基本的驱动框架 | LED驱动

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3c0;最基本的驱动框架⚽驱动程序框架⚽编程 &#x1f3c0;LED驱动⚽配置GPIO⚽编程…

顺序表的基本操作(必学)

目录 线性表&#xff1a; 顺序表&#xff1a; 概念和结构&#xff1a; 动态顺序表常用操作实现&#xff1a; 头文件&#xff08;数组顺序表的声明&#xff09;&#xff1a; 各种基本操作总的声明&#xff1a; 顺序表的初始化&#xff1a; 顺序表的销毁 顺序表的打印 …

3分钟了解安全数据交换系统有什么用!

企业为了保护核心数据安全&#xff0c;都会采取一些措施&#xff0c;比如做网络隔离划分&#xff0c;分成了不同的安全级别网络&#xff0c;或者安全域&#xff0c;接下来就是需要建设跨网络、跨安全域的安全数据交换系统&#xff0c;将安全保障与数据交换功能有机整合在一起&a…

Wordpress对接Lsky Pro 兰空图床插件

Wordpress对接Lsky Pro 兰空图床插件 wordpress不想存储图片到本地&#xff0c;访问慢&#xff0c;wordpress图片没有cdn想要使用图床&#xff0c;支持兰空自定义接口 安装教程—在wp后台选择插件zip—然后启用—设置自己图床API接口就ok了&#xff0c;文件全部解密&#xff0c…

实习知识整理9: 点击直接购买按钮后,跳转到确认订单页面

1. 为按钮绑定事件 <button id"addCartButton">加入购物车</button><br/> $("#buyButton").click(function () {if ( ! loginUser) {// 如何将商品信息传递到后台&#xff0c;后台能够将内容在新的订单页面显示$("#buyItemForm&quo…

[SWPUCTF 2021 新生赛]hardrce

[SWPUCTF 2021 新生赛]hardrce wp 参考博客&#xff1a;https://www.cnblogs.com/bkofyZ/p/17644820.html 代码审计 题目的代码如下&#xff1a; <?php header("Content-Type:text/html;charsetutf-8"); error_reporting(0); highlight_file(__FILE__); if(is…

数据结构之<堆>的介绍

1.简介 堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构&#xff0c;并且具有一些特殊的性质&#xff0c;根据这些性质&#xff0c;堆被分为最大堆&#xff08;或者大根堆&#xff0c;大顶堆&#xff09;和最小堆两种。 2.…

H266/VVC帧间预测编码技术概述

帧间预测编码简述 帧间预测利用视频时间域的相关性&#xff0c;使用邻近已编码图像像素值预测当前图像的像素值&#xff0c;能有效去除视频时域冗余。 目前主要的视频编码标准中&#xff0c;帧间预测都采用基于块的运动补偿技术&#xff0c;不同的编码标准有不同的分块方式。 …

爆款前端设计工具揭晓!提高工作效率的5款神器,助你事半功倍!

前端设计工具以更低的成本提供更快的移动开发&#xff0c;他们帮助前端开发人员有效地创建响应设计&#xff0c;但找到一个实用的前端设计工具并不容易&#xff0c;在这里&#xff0c;即时设计师为您组织了五个免费和易于使用的前端页面工具&#xff0c;来选择一个&#xff01;…

使用Visual Studio调试VisionPro脚本

使用Visual Studio调试VisionPro脚本 方法一 &#xff1a; 修改项目文件 csproj步骤&#xff1a; 方法二 &#xff1a; Visual Studio附加功能步骤&#xff1a; 方法一 &#xff1a; 修改项目文件 csproj 步骤&#xff1a; 开启VisionPro脚本调试功能 创建一个VisionPro程序…

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf