在Java中如何将字节数组转换为十六进制?

2024-05-29

我有一个字节数组。我希望该数组的每个字节字符串转换为其相应的十六进制值。

Java中有没有将字节数组转换为十六进制的函数?


byte[] bytes = {-1, 0, 1, 2, 3 };
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%02X ", b));
}
System.out.println(sb.toString());
// prints "FF 00 01 02 03 "

See also

  • java.util.Formatter syntax http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#syntax
    • %[flags][width]conversion
      • Flag '0'- 结果将被零填充
      • Width 2
      • 转换'X'- 结果格式化为十六进制整数,大写

看看问题的文字,也可能是这样的:

String[] arr = {"-1", "0", "10", "20" };
for (int i = 0; i < arr.length; i++) {
    arr[i] = String.format("%02x", Byte.parseByte(arr[i]));
}
System.out.println(java.util.Arrays.toString(arr));
// prints "[ff, 00, 0a, 14]"

这里的几个答案使用Integer.toHexString(int) http://java.sun.com/javase/6/docs/api/java/lang/Integer.html#toHexString%28int%29;这是可行的,但有一些注意事项。由于参数是一个int,执行拓宽原始转换byte论证,其中涉及符号扩展。

byte b = -1;
System.out.println(Integer.toHexString(b));
// prints "ffffffff"

8 位byte,在 Java 中是有符号的,被符号扩展为 32 位int。为了有效地撤消这一符号扩展,可以屏蔽byte with 0xFF.

byte b = -1;
System.out.println(Integer.toHexString(b & 0xFF));
// prints "ff"

使用时的另一个问题toHexString是它不用零填充:

byte b = 10;
System.out.println(Integer.toHexString(b & 0xFF));
// prints "a"

这两个因素结合起来应该使String.format解决方案更优选。

参考

  • JLS 4.2.1 Integral Types and Values http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.1
    • For byte, from -128 to 127, 包括的
  • JLS 5.1.2 拓宽原语转换 http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中如何将字节数组转换为十六进制? 的相关文章

  • Eclipse + Spring Boot 中“抛出 new SilentExitException()”处的断点

    每次我在 Eclipse IDE Spring Tool Suite 中以调试模式运行 Spring Boot 项目时 线程都会停止在throw new SilentExitException 即使没有断点也行 有什么解决方案可以避免这种行
  • 从 ArrayList Java 中的 HashMap 键中检索所有值

    美好的一天 这让我现在有点困惑 大脑冻结 并且似乎遗漏了一些东西 有一个 ArrayList 我用 HashMap 填充它 现在我放入 HashMap 和 arraylist Map put DATE value1 Map put VALU
  • Hibernate统计打印HQL:null

    我是使用休眠的新手 我打开了统计信息 与普通的 HQL 查询一起 我得到了许多这样的统计信息 INFO Statistics HQL null time 1724ms rows blah 有人可以以任何方式帮助我为什么null查询大约需要
  • 限制执行第三方软件的线程的权限

    我正在开发一个基于 Eclipse 的应用程序 能够执行第三方组件 不是 eclipse plugin 每个组件都有一个列出权限 以及相应动机 的自定义描述符 这样最终用户可以决定是否执行它 组件在单独的线程中执行 如何根据描述符限制这些线
  • 在java中将HTML转换为RTF?

    我需要将 HTML 转换为 RTF 我正在使用以下代码 private static String convertToRTF String htmlStr OutputStream os new ByteArrayOutputStream
  • 如何将堆栈跟踪转换为字符串?

    转换结果的最简单方法是什么Throwable getStackTrace 到描述堆栈跟踪的字符串 Use Throwable printStackTrace PrintWriter pw https docs oracle com java
  • Linux 上的 JavaFX

    Linux x86 和 x64 上的 JavaFX 情况如何 JavaFX 应用程序可以在 Linux 操作系统上顺利执行吗 我发现了 2011 年和 2012 年的一些问题 当时应用程序不稳定 目前发布的 JFX 版本是 2 2 4 在
  • JFreeChart 更改现有条形图中的数据

    我想循环更改条形图数据 但我不知道该怎么做 我的代码 DefaultCategoryDataset barChartData new DefaultCategoryDataset barChartData setValue 0 Values
  • 获取 Spring Boot 中当前活动数据源的引用

    我想通过实现数据库数据初始化DataSourceInitializer 我将这些方法放在我的 Spring Boot 主方法下面 但似乎它根本没有被执行 我尝试故意删除字符只是为了触发一个错误来确认执行 什么也没有发生 Configurat
  • 自动装箱是否调用 valueOf()?

    我试图确定以下陈述是否保证为真 Boolean true Boolean TRUE Boolean true Boolean valueOf true Integer 1 Integer valueOf 1 我一直认为自动装箱相当于调用va
  • Apache HTTPClient SSLPeerUnverifiedException

    使用 Apache HttpClient 4 2 1 使用从基于表单的登录示例复制的代码 http hc apache org httpcomponents client ga examples html http hc apache or
  • 为什么 (Oracle) JVM 对内存使用有固定上限 (-Xmx)?

    本着提问的精神Java 为什么存在 MaxPermSize https stackoverflow com questions 3356005 java why does maxpermsize exist 我想问一下为什么Oracle J
  • 如何在Java中验证字符串是否是有效的URL(包括深层链接)[重复]

    这个问题在这里已经有答案了 如何在 Java 中验证字符串是否是有效的 URL 包括深层链接 对于以下测试用例 该方法应返回 true http www example com gizmos https www example com gi
  • NoSuchMethodError:org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute

    我正在尝试在 spring boot 应用程序中使用 spring data redis 来使用 redis 我正在创造JedisConnectionFactory如下 RedisStandaloneConfiguration config
  • 在java中访问dll方法

    我正在尝试访问java中用c 编写的dll方法 从下面的代码我试图构建已成功生成的 dll using System using Microsoft Win32 namespace CyberoamWinHelper public clas
  • Scala 不可变 Map 速度慢

    当我创建地图时 我有一段代码 val map gtfLineArr 8 split map split collect case Array k v gt k v toMap 然后我使用这张地图来创建我的对象 case class MyOb
  • 在 Ubuntu 上的 Tomcat 中加载共享本机库

    如何在 Ubuntu 上的 Tomcat6 中加载共享库 我创建了一个名为 libawragrids so 的库 awragrids 并将其放置在 var lib tomcat6 shared 我在调用启动 tomcat 的终端中设置了以下
  • JPA2+Hibernate 3.6.0 中的 JTA 还是 LOCAL 事务?

    我们正在重新思考我们的技术堆栈 以下是我们的选择 由于应用程序的复杂性等 我们不能没有 Spring 和 Hibernate 我们还从 J2EE 1 4 迁移到 Java EE 5 技术栈 Java EE 5 JPA 2 0 我知道Java
  • GridLayout 中的 JLabel

    如何添加JLabel出于GridLayout 我有一个 8x8 网格布局 Container content getContentPane content setLayout new GridLayout 8 8 2 2 for int f
  • Java中ThreadFactory的使用

    有人可以简要解释一下如何以及何时使用 ThreadFactory 吗 使用和不使用 ThreadFactory 的示例可能确实有助于理解差异 Thanks 这是一种可能的用法 假设您有一个ExecutorService它执行你的Runnab

随机推荐

  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • 超出 Redis 连接/缓冲区大小限制

    在对我们的应用程序服务器进行压力测试时 我们从 Redis 中得到以下异常 ServiceStack Redis RedisException 无法连接到 redis host 6379 处的 redis 实例 gt System Net
  • 如果数组包含一个或多个相同值,则合并数组

    我有一个数组数组 a 1 2 3 3 4 5 6 7 8 8 9 9 10 我想合并包含一个或多个相同值的所有数组 所以 a 1 2 3 4 5 6 7 8 9 10 我正在努力寻找一种简洁的方法来解决这个问题 有任何想法吗 我相信这是正确
  • 在 IntelliJ 存储库中保存默认运行配置

    我需要为单元测试添加一些标志 并希望与所有团队成员共享它们 IntelliJ 有一个共享运行配置的解决方案 https stackoverflow com questions 24642147 how do i share intellij
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 如何阻止选项卡在 IntelliJ IDEA 内重新排序?

    每次我单击 IntelliJ IDEA 中的某个选项卡时 它都会对所有选项卡重新排序 当我了解选项卡的顺序 然后它会切换时 我发现这非常烦人 这真的很烦人也很悲伤 因为这个问题是 2009 年的 现在还没有解决 我测试了多种配置并找到了合适
  • 设置开始日期后设置 primefaces 日历结束日期

    我正在使用 primefaces 日历来创建事件 使用 mindate 参数 我禁用了当天之前的日子 即使有结束日期 我也想这样做 禁用开始日期之前的日子 我不知道如何处理这个问题 因为支持 bean 仅在验证整个表单后才获取开始日期 我需
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • ASP.NET 5 中的全局异常处理

    如何将自己的日志记录逻辑附加到 ASP NET 5 应用程序以处理业务逻辑和较低层中引发的每个异常 我尝试用自己的ILoggerProvider实施和loggerfactory AddProvider new LoggerProvider
  • Jquery Mobile 面板动态列表视图无法正确渲染

    我有一个 searchresults php 页面 其中显示了已找到的几个用户 searchresults php 页面上还有一个面板 div div div div 当我单击 用户 div 之一时 将触发以下 Jquery 函数来打开面板
  • 在elasticsearch中存储聊天消息的最佳方式

    我们目前正在实施一项即时通讯系统在我们的平台上 我们需要为我们的用户提供聊天记录并能够显示用户最近进行的 5 次对话 像 Facebook 上的预览一样 事实上 我们必须考虑如何才能存储所有这些数据 我们正在使用弹性搜索我们认为这可能是存储
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • 你可以拥有你的 API 并在 Laravel 中使用它吗?

    我制作了一个在 Laravel 中返 回 json 的 API 路线 api php 现在我想在我的内部使用所述APIweb项目的一侧 路线 web php 包括中间件 刀片视图 etc 我当前的解决方案是这样的 public functi
  • 关于Tcl源码的问题

    我有一个名为 test7 tcl 的文件 namespace eval dai variable name ratzip variable birthday 1982 proc hello variable name variable bi
  • 无法从 webm 视频中提取 webp 中的帧

    我无法从 8K webp 视频中提取帧 我正在使用 ffmpeg 来提取帧 这是我正在使用的命令 ffmpeg i content to extract webm frame 2d webp 我得到的输出文件中没有任何数据 但是 当我导出为
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 如何防止克隆我的 github 存储库?

    我正在尝试找到一种方法来防止从 github 存储库克隆 例如 我有一个私有存储库 有些人在该存储库中工作 在公司计算机中 团队中的每个人都设置了授权级别 当我在 github 上为某个用户设置授权时 该存储库可在他 她自己的 github
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for