如何将 base64 字节字符串转换为 Float32 或 Float64?
How to convert a base64 string of bytes to Float32 or Float64?
我正在尝试将 VTK (vtu) XML 格式的文件从 base64 二进制字符串转换为 ASCII 字符串。这些文件看起来有点像这样:
<Points>
<DataArray type="Float32" NumberOfComponents="3" format="binary">
`gJQGAGp7+sJTMbPCVWiWv4RP+8LbKrTCj0yDv1kC+8J5w7PCUe0xv34YAMNqprTCtsRDv7yw/8IgdLTCUE0lv/8 (etc...)
</DataArray>
</Points>
您还可以使用 ASCII 格式的这些文件,因此在 ASCII 中,同样的内容如下所示:
<Points>
<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="ascii" RangeMin="9.6120050431" RangeMax="280.36424584">
-125.24104309 -89.596336365 -1.1750589609 -125.65530396 -90.083702087 -1.0257738829
-125.50458527 -89.881782532 -0.69502741098 -128.09567261 -90.325027466 -0.7647203207
-127.84518433 -90.226806641 -0.64571094513 -128.24607849 -90.475311279 -0.61999017
(etc...)
</DataArray>
</Points>
当文件以 ASCII 或二进制形式出现时,我需要我的代码才能工作,因此我需要能够将第一种情况下的 base64 字符串转换为第二种情况下的 ASCII 格式。
现在我有:
string pointString = nodeList[0].ChildNodes.Item(0).InnerText.Trim();
if(format.Equals("binary", StringComparison.InvariantCultureIgnoreCase))
{
byte[] bytes = Convert.FromBase64String(pointString);
pointString = Encoding.ASCII.GetString(bytes);
}
aa 我的字符串全错了:
pointString: ?$
我觉得我在这里缺少一些简单的东西。我哪里错了?
尝试将字节直接转换为浮点数并检查它是否产生有效结果:
byte[] bytes = Convert.FromBase64String(pointString);
float[] dataArray = Enumerable.Range(0, bytes.length / 4).Select(i => BitConverter.ToSingle(bytes, i * 4)).ToArray();
我正在尝试将 VTK (vtu) XML 格式的文件从 base64 二进制字符串转换为 ASCII 字符串。这些文件看起来有点像这样:
<Points>
<DataArray type="Float32" NumberOfComponents="3" format="binary">
`gJQGAGp7+sJTMbPCVWiWv4RP+8LbKrTCj0yDv1kC+8J5w7PCUe0xv34YAMNqprTCtsRDv7yw/8IgdLTCUE0lv/8 (etc...)
</DataArray>
</Points>
您还可以使用 ASCII 格式的这些文件,因此在 ASCII 中,同样的内容如下所示:
<Points>
<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="ascii" RangeMin="9.6120050431" RangeMax="280.36424584">
-125.24104309 -89.596336365 -1.1750589609 -125.65530396 -90.083702087 -1.0257738829
-125.50458527 -89.881782532 -0.69502741098 -128.09567261 -90.325027466 -0.7647203207
-127.84518433 -90.226806641 -0.64571094513 -128.24607849 -90.475311279 -0.61999017
(etc...)
</DataArray>
</Points>
当文件以 ASCII 或二进制形式出现时,我需要我的代码才能工作,因此我需要能够将第一种情况下的 base64 字符串转换为第二种情况下的 ASCII 格式。
现在我有:
string pointString = nodeList[0].ChildNodes.Item(0).InnerText.Trim();
if(format.Equals("binary", StringComparison.InvariantCultureIgnoreCase))
{
byte[] bytes = Convert.FromBase64String(pointString);
pointString = Encoding.ASCII.GetString(bytes);
}
aa 我的字符串全错了:
pointString: ?$
我觉得我在这里缺少一些简单的东西。我哪里错了?
尝试将字节直接转换为浮点数并检查它是否产生有效结果:
byte[] bytes = Convert.FromBase64String(pointString);
float[] dataArray = Enumerable.Range(0, bytes.length / 4).Select(i => BitConverter.ToSingle(bytes, i * 4)).ToArray();