Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Base64字符串转换为浮点数组或int数组?_C#_Linq_Base64 - Fatal编程技术网

C# 如何将Base64字符串转换为浮点数组或int数组?

C# 如何将Base64字符串转换为浮点数组或int数组?,c#,linq,base64,C#,Linq,Base64,我有一些代码可以将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[] i_elements = <

我有一些代码可以将
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[] 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);
}
byte[]bytes=Convert.FromBase64String();
int[]int=new int[bytes.Length/4];
for(int i=0;i
(当然,
到single
的等价物。)


在我看来,
GetBytes
没有重载将字节直接写入现有数组,而不是在每次调用时创建一个新数组,这是一个遗憾…

有什么问题吗


我想你可能还想看看,出于测试目的,你可以发布一个字符串的示例吗..我需要从byte[]到
float[]
int[]
@下面JonSkeet的答案看起来是这样的,现在看看。哦,我看到他在我打字的时候回答了所有这些。那里竞争激烈!
bytes.Length/4
i*4
是否使用4,因为
Int32
单个
是4字节?如果其中一个数组被假定为一个
双[]
,我会把它改为8吗?@Brett:是的,没错。
byte[] i_feat = Convert.FromBase64String(i_sig)