gpt4 book ai didi

java - byte[] 到字符串 {100,25,28,-122,-26,94,-3,-26}

转载 作者:行者123 更新时间:2023-12-01 14:51:00 31 4
gpt4 key购买 nike

如何将此 byte[] 转换为 String :

byte[] mytest = new byte[] {100,25,28,-122,-26,94,-3,-26};

我得到这个:“d��^�”当我使用:

new String( mytest , "UTF-8" )

这是用于创建 key 的java代码:

m_key = new javax.crypto.spec.SecretKeySpec(new byte[] {100,25,28,-122,-26,94,-3,-26}, "DES");

谢谢。

最佳答案

为了将字节数组解码为 ASCII 之类的内容,您需要知道其原始编码。否则,您需要将其视为二进制文件。

注意:Base64 用于跨网络传输二进制数据。

我建议对你的字节数组进行 Base64 编码。然后在 PHP 代码中将 Base64 字符串解码回 UTF-8 字符串。

在 Java 中,以下是如何对字节数组进行 Base64 编码,然后将其解码回 UTF-8:

import org.apache.commons.codec.binary.Base64;

public class MyTest {
public static void main(String[] args) throws Exception {
byte[] byteArray = new byte[] {100,25,28,-122,-26,94,-3,-26};
System.out.println("To UTF-8 string: " + new String(byteArray, "UTF-8"));

byte[] base64 = Base64.encodeBase64(byteArray);
System.out.println("To Base64 string: " + new String(base64, "UTF-8"));

byte[] decoded = Base64.decodeBase64(base64);
System.out.println("Back to UTF-8 string: " + new String(decoded, "UTF-8"));

/* the decoded byte array is the same as the original byte array */
for (int i = 0; i < decoded.length; i++) {
assert byteArray[i] == decoded[i];
}
}
}

上述代码的输出是:

To UTF-8 string: d��^�To Base64 string: ZBkchuZe/eY=Back to UTF-8 string: d��^�

So if you wanted to use the same binary data in your PHP code, cut and paste the Base64 string into your PHP code and decode it back to UTF-8. Something like this:

<?php
$str = 'ZBkchuZe/eY=';
$key = base64_decode($str);
echo $key;
?>

我不使用 PHP 编码,但您应该能够使用此方法解码 Base64: http://php.net/manual/en/function.base64-decode.php

上面的代码应该将原始二进制数据回显为 UTF-8(尽管有有趣的字符)。关键是 $key 变量中看起来很滑稽的字符串表示的二进制数据与 Java 字节数组中的二进制数据相同:

d��^�

您应该能够将 $key 变量传递到 PHP 加密方法中。

关于java - byte[] 到字符串 {100,25,28,-122,-26,94,-3,-26},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852016/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com