gpt4 book ai didi

java - 如何将 float 组转换为单字节字符串?

转载 作者:行者123 更新时间:2023-11-29 19:01:11 24 4
gpt4 key购买 nike

我正在尝试向谷歌云的 ml-engine 上的模型发送 Json 请求。这需要表单中的 json

为此,我需要将 float 组转换为单个 base64 编码字符串

我想也许是 google protobuf ByteString将是我正在寻找的,但这似乎与字节数组 (stackoverflow question on the difference between the two) 的行为方式相同.

我目前为“b64”键创建值的方法创建了一个字节字符串数组,这会导致谷歌云错误 (see other question) .

  public static String[] convertToBase64Bytes(float[] audio) {
String[] data = new String[audio.length];
for (int i = 0; i < audio.length; i++) {
float amplitude = audio[i];
byte[] byteArray = ByteBuffer.allocate(4).putFloat(amplitude).array();
data[i] = Base64.encodeToString(byteArray, Base64.DEFAULT);
}
return data;
}

我一直无法找到如何将整个 float 组转换为单个 base64 字节字符串,然后 ml-engine 可以将其转换回原始数组。

如果它有用,我这样做的方式是 Python

bytes_string = audio_array.tostring() #audio_array is a numpy array
encoded = base64.b64encode(bytes_string)

有人能帮忙吗?谢谢。

最佳答案

public static String convertToBase64Bytes(float[] audio) { 
ByteBuffer buff = ByteBuffer.allocate(4 * audio.length);
for (int i = 0; i < audio.length; i++) {
float amplitude = audio[i];
buff.putFloat(amplitude);
}
String data = Base64.getEncoder().encodeToString(buff.array(), Base64.DEFAULT);
return data;
}

关于java - 如何将 float 组转换为单字节字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027557/

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