如何将 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.ToInt32
或BitConverter.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)
我有一些代码可以将 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.ToInt32
或BitConverter.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)