当前位置: 首页 > 面试题库 >

如何在Java中初始化字节数组?

沈俊明
2023-03-14
问题内容

我必须在Java中以字节数组形式存储一些常量值(UUID),并且我想知道初始化这些静态数组的最佳方法是什么。这就是我目前的做法,但我觉得必须有更好的方法。

private static final byte[] CDRIVES = new byte[] { (byte)0xe0, 0x4f, (byte)0xd0,
    0x20, (byte)0xea, 0x3a, 0x69, 0x10, (byte)0xa2, (byte)0xd8, 0x08, 0x00, 0x2b,
    0x30, 0x30, (byte)0x9d };
private static final byte[] CMYDOCS = new byte[] { (byte)0xba, (byte)0x8a, 0x0d,
    0x45, 0x25, (byte)0xad, (byte)0xd0, 0x11, (byte)0x98, (byte)0xa8, 0x08, 0x00,
    0x36, 0x1b, 0x11, 0x03 };
private static final byte[] IEFRAME = new byte[] { (byte)0x80, 0x53, 0x1c,
    (byte)0x87, (byte)0xa0, 0x42, 0x69, 0x10, (byte)0xa2, (byte)0xea, 0x08,
    0x00, 0x2b, 0x30, 0x30, (byte)0x9d };
...
and so on

有什么我可以使用的,虽然效率可能较低,但看起来会更干净?例如:

private static final byte[] CDRIVES =
    new byte[] { "0xe04fd020ea3a6910a2d808002b30309d" };

问题答案:

使用将十六进制字符串转换为的函数byte[],您可以执行

byte[] CDRIVES = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");

我建议您在使用Java将十六进制转储的字符串表示形式转换为字节数组中使用 DaveL定义的功能吗?

我将其插入此处以获得最大的可读性:

public static byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                             + Character.digit(s.charAt(i+1), 16));
    }
    return data;
}

如果让CDRIVES staticfinal,则性能下降无关紧要。



 类似资料:
  • 我必须在java中以字节数组的形式存储一些常量值(UUID),我想知道初始化这些静态数组的最佳方法是什么。我现在就是这样做的,但我觉得一定有更好的办法。 有没有什么东西我可以使用,可能效率较低,但会看起来更干净?例如:

  • 问题内容: 我正在初始化这样的数组: NetBeans在此行指出一个错误: 我该如何解决这个问题? 问题答案: 上面的信息不正确(语法错误)。这意味着你正在分配一个仅可容纳元素的数组。 如果要初始化数组,请尝试使用: 注意两个声明之间的区别。将新数组分配给声明的变量时,new必须使用。 即使你纠正了语法,访问仍然是不正确的(你只能访问,因为Java中的数组索引是基于0的)。访问]将抛出。

  • 问题内容: 我想初始化一个BlackJack游戏的Player对象数组。我已经阅读了很多有关初始化原始对象(例如int数组或字符串数​​组)的各种方法的信息,但是我无法将此概念理解为我在此处尝试做的事情(见下文)。我想返回一个初始化的Player对象数组。要创建的播放器对象的数量是一个整数,我向用户提示。我以为构造函数可以接受一个整数值并在初始化Player对象的一些成员变量时相应地命名播放器。我

  • 问题内容: 我无法按照以下代码初始化列表: 我遇到以下错误: 无法实例化类型 我该如何实例化? 问题答案: 如果你检查API,则会注意到它说: 作为一种手段,它无法实例化(不可能)。 如果你检查该链接,则会发现一些实现的: 所有已知的实施类: 那些可以实例化。使用它们的链接来了解有关它们的更多信息,即IE:知道哪个更适合你的需求。 三种最常用的可能是: 奖励: 你还可以使用,以更简单的方式使用值实

  • 本文向大家介绍如何在Java 9的JShell中初始化数组?,包括了如何在Java 9的JShell中初始化数组?的使用技巧和注意事项,需要的朋友参考一下 Java中的数组 也是一个对象。我们需要声明一个数组然后创建。为了声明一个包含整数数组的变量,我们可以像int [] array一样提到。在数组中,索引 从0到(数组的长度-1)开始。 片段1 在下面的代码片段中,我们可以创建一个标记数组来存储

  • 问题内容: 如何在Java中声明和初始化数组? 问题答案: 你可以使用数组声明或数组文字(但只有当你立即声明并影响变量时,数组文字才能用于重新分配数组)。 对于原始类型: 例如,对于类,String是相同的: 当你首先声明数组然后对其进行初始化时,第三种初始化方法很有用。