[英]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.