gpt4 book ai didi

java - 如何在 Kotlin/Java 中对 Numpy 数组(Python)进行 base64 解码?

转载 作者:行者123 更新时间:2023-12-02 13:11:41 25 4
gpt4 key购买 nike

当然,有更好/安全的选项来传输/存储数据,但我们假设我们绑定(bind)到这种表示。

以下 Python 代码将 Numpy 数组转换为 Base64:

import base64
import numpy as np

arr = np.array([1.1, 2.2, 3.3], dtype=np.float32)
print(base64.b64encode(arr).decode("ascii"))

输出:
zcyMP83MDEAzM1NA

使用 Kotlin 我想转换回原来的 float值(value)观:
import java.io.ByteArrayInputStream
import java.io.DataInputStream
import java.util.*

fun main() {
val buffer = Base64.getDecoder().decode("zcyMP83MDEAzM1NA")
val ds = DataInputStream(ByteArrayInputStream(buffer))
val arr = FloatArray(buffer.size / 4)
for (i in arr.indices) {
arr[i] = ds.readFloat()
}
println(arr.contentToString())
}

然而,输出并不像预期的那样,即 [1.1, 2.2, 3.3] ,但改为以下内容:
[-4.28967904E8, -4.2791936E8, 4.17524E-8]

我在这里有什么错误?

最佳答案

所以,闲聊,我很确定与字节序有关,考虑:

>>> import numpy as np
>>> arr = np.array([1.1, 2.2, 3.3], dtype=np.float32)
>>> arr
array([1.1, 2.2, 3.3], dtype=float32)
>>> arr.byteswap()
array([-4.2896790e+08, -4.2791936e+08, 4.1752401e-08], dtype=float32)

因此,在 Python 方面,您可以使用:
base64.b64encode(arr.byteswap())

关于java - 如何在 Kotlin/Java 中对 Numpy 数组(Python)进行 base64 解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60966791/

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