繁体   English   中英

如何将Base64字符串转换为float数组或int数组?

[英]How can I convert a Base64 string to a float array or int array?

我有一些代码将float[]转换为Base64字符串:

float[] f_elements = <from elsewhere in my code>;
byte[] f_vfeat = f_elements.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
string f_sig = Convert.ToBase64String(f_vfeat);

基本上也有将int[]转换为Base64字符串的相同代码:

int[] i_elements = <from elsewhere in my code>;
byte[] i_feat = i_elements.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
string i_sig = Convert.ToBase64String(i_feat);

两者均产生预期的Base64字符串。 但是,现在我需要解码回数组,并且遇到了麻烦。

如何从我的Base64字符串中获取原始数据数组。 在解码Base64字符串之前,我会知道它应该是int[]还是float[] ,所以我认为这会有所帮助。

有谁知道该怎么办从Base64字符串到float[]int[]吗?

您可以使用BitConverter.ToInt32BitConverter.ToSingle转换数组的一部分:

byte[] bytes = Convert.FromBase64String();
int[] ints = new int[bytes.Length / 4];
for (int i = 0; i < ints.Length; i++)
{
    ints[i] = BitConverter.ToInt32(bytes, i * 4);
}

(当然,与ToSingle等效)。

在我看来,很遗憾GetBytes没有将字节直接写到现有数组中的重载,而不是在每次调用时都创建一个新数组。

Convert.FromBase64String有什么问题吗?

byte[] i_feat = Convert.FromBase64String(i_sig)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM