相关疑难解决方法(0)

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

我有一个字节数组填充十六进制数字和打印它简单的方法是非常没有意义的,因为有许多不可打印的元素.我需要的是以下形式的确切十六进制代码:3a5f771c

java hex bytearray

606
推荐指数
16
解决办法
67万
查看次数

将char数组转换为字节数组并再次返回

我正在寻找将Java char数组转换为字节数组而不创建中间数String,因为char数组包含密码.我查了几种方法,但它们似乎都失败了:

char[] password = "password".toCharArray();

byte[] passwordBytes1 = new byte[password.length*2];
ByteBuffer.wrap(passwordBytes1).asCharBuffer().put(password);

byte[] passwordBytes2 = new byte[password.length*2];
for(int i=0; i<password.length; i++) {
    passwordBytes2[2*i] = (byte) ((password[i]&0xFF00)>>8); 
    passwordBytes2[2*i+1] = (byte) (password[i]&0x00FF); 
}

String passwordAsString = new String(password);
String passwordBytes1AsString = new String(passwordBytes1);
String passwordBytes2AsString = new String(passwordBytes2);

System.out.println(passwordAsString);
System.out.println(passwordBytes1AsString);
System.out.println(passwordBytes2AsString);
assertTrue(passwordAsString.equals(passwordBytes1) || passwordAsString.equals(passwordBytes2));
Run Code Online (Sandbox Code Playgroud)

断言总是失败(并且,关键是,当在生产中使用代码时,密码被拒绝),但是打印语句打印出密码三次.为什么passwordBytes1AsStringpasswordBytes2AsString不同passwordAsString,但看起来相同?我错过了一个空终结符或什么?我该怎么做才能使转换和非转换工作?

java arrays byte char

36
推荐指数
4
解决办法
7万
查看次数

标签 统计

java ×2

arrays ×1

byte ×1

bytearray ×1

char ×1

hex ×1