【面试题精讲】如何将二进制转为十六进制

2023-09-21 14:26:34

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

文章更新计划

系列文章地址


/**
 * 二进制转换为十六进制
 * 这里主要用于处理图片数据,因为数据库存储了图片的Base64编码
 */

private String bytesToHexString(byte[] bytes) {
    StringBuilder hexString = new StringBuilder();
    for (byte b : bytes) {
        String hex = Integer.toHexString(0xff & b);
        if (hex.length() == 1) {
            hexString.append('0');
        }
        hexString.append(hex);
    }
    return hexString.toString();
}

这个方法接受一个byte数组作为参数,表示二进制数据。它会将每个字节转换为对应的十六进制字符串,并将这些字符串拼接在一起,最后返回一个完整的十六进制字符串。

具体的实现步骤如下:

  1. 创建一个 StringBuilder对象 hexString,用于存储转换后的十六进制字符串。
  2. 使用 for-each循环遍历 bytes数组中的每个字节。
  3. 对于每个字节,使用 Integer.toHexString()方法将其转换为对应的十六进制字符串。 0xff & b是为了确保将字节转换为无符号整数。
  4. 如果转换后的十六进制字符串长度为1,说明只有一位,需要在前面补0。
  5. 将转换后的十六进制字符串追加到 hexString中。
  6. 循环结束后,使用 toString()方法将 hexString转换为一个完整的十六进制字符串,并返回。

这个方法可以用于将任意二进制数据转换为十六进制字符串,不仅限于处理图片数据。你可以在其他需要将二进制数据转换为十六进制字符串的场景中使用这个方法。

本文由 mdnice 多平台发布

更多推荐

【C++】C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数的作用 )

文章目录一、普通变量/一级指针/二级指针做函数参数的作用1、普通变量做函数参数的作用2、一级指针做函数参数的作用3、二级指针做函数参数的作用4、代码示例-二级指针做函数参数的作用一、普通变量/一级指针/二级指针做函数参数的作用1、普通变量做函数参数的作用普通变量的作用:将普通变量传入函数作为参数,则可以在函数中,访问到

【Java 基础篇】Java 运算符宝典:Java编程的关键

在Java编程中,运算符是用于执行各种操作的特殊符号。它们可以用于操作各种数据类型,执行算术、逻辑和比较等操作。本篇博客将详细介绍Java中常见的运算符,以及它们的使用和示例。算术运算符算术运算符用于执行基本的数学运算,如加法、减法、乘法和除法。加法运算符(+)加法运算符用于将两个值相加,并返回它们的和。示例:inta

MySQL主从复制与读写分离

目录MySQL主从复制1、mysql支持的复制类型2、主从复制的工作过程3、主从复制操作1)下载时间同步工具,并配置时间源,实现slave库与master库时间同步2)、配置主master库3)配置slave库4)登录主MySQL,给从服务器授权5)登录从数据库,配置同步,并启动同步6)测试MySQL读写分离MySQL

HTTPS的传输过程

加密分为两种方式一种是对称加密,一种是非对称加密。在对称加密算法中,加密和解密使用的密钥是相同的。也就是说,加密和解密使用的是同一个密钥。因此,对称加密算法要保证安全性的话,密钥要做好保密。只能让使用的人知道,不能对外公开。在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为

机器学习西瓜书+南瓜书吃瓜教程学习笔记第四章决策树

1、算法原理从逻辑角度,一堆ifelse语句的组合从集合角度,根据某种准则划分特征空间最终目的:将样本越分越“纯”决策树是基于树结构来进行决策的例如,我们对“这是好瓜吗?”这样的问题进行决策时,通常会进行一系列的判断或“子决策”:我们先看“它是什么颜色?”,如果是“青绿色”,则我们再看“它的根蒂是什么形态?”,如果是“

Linux C 网络基础

为什么需要网络通信?进程间通信解决的是本机内通信网络通信解决的是任意不同机器的通信实现网络通信需要哪些支持1.通信设备:网卡(PC机自带);路由器和交换机;光纤、电缆和基站2.通信协议:2.1.操作系统自带协议栈(Linux的特点:丰富的网络协议)2.2.裸机开发需要独立的协议栈3.简单网络通信只需要学会系统APITC

Java基础(三)

前言:前面主要涉及到java的基本语法,接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。目录数据结构泛型集合分类Collection的分类collection常用方法collection遍历方式迭代器for循环Lambda表达式List集合特点增删改查List集合的遍历方式

爬虫 — Scrapy 框架(一)

目录一、介绍1、同步与异步2、阻塞与非阻塞二、工作流程三、项目结构1、安装2、项目文件夹2.1、方式一2.2、方式二3、创建项目4、项目文件组成4.1、piders/__init__.py4.2、spiders/demo.py4.3、__init__.py4.4、items.py4.5、middlewares.py4.

npm安装心得(依赖库Python及node-sass依赖环境)

在使用vue的开发环境过程中,总会遇到这样哪样的安装或者打包错误,vue运行或打包常见错误如下:1.npminstall时node-sassnpmERRcommandfailed(可能是node.js的版本和node-sass的版本不符,就是卸掉原来的node.js,下载一个符合node-sass版本的node.js)

Go - 【字符串,数组,哈希表】常用操作

一.字符串字符串长度:s:="hello"l:=len(s)fmt.Println(l)//输出5遍历字符串:s:="hello"fori,c:=ranges{fmt.Printf("%d:%c",i,c)}//输出:0:h1:e2:l3:l4:ofori:=0;i<len(s);i++{fmt.Printf("%s"

Go基础-文件、字符

文件创建导入“os”包,创建文件,读写文件的函数都在改包。指定创建的文件存放路径以及文件名。执行Create()函数,进行文件创建。关闭文件。packagemainimport("fmt""os")funcmain(){//创建文件,需要指定文件的存放路径以及文件名称//file为文件指针file,err:=os.Cr

热文推荐