簡體   English   中英

如何將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);
}

aaand我的字符串出了錯:

pointString:?$

我覺得這里缺少一些簡單的東西。 我要去哪里錯了?

嘗試將字節直接轉換為浮點數,並檢查其是否產生有效的結果:

byte[] bytes = Convert.FromBase64String(pointString);
float[] dataArray = Enumerable.Range(0, bytes.length / 4).Select(i => BitConverter.ToSingle(bytes, i * 4)).ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM