2015-09-07 83 views
0

使用Tcl API從通道讀取的首選方法是Tcl_ReadChars()。從二進制通道讀取數據時,數據將以字節數組的形式存儲直至被引用,此時轉換將完成。如何使用Tcl_ReadChars從二進制文件讀取浮點數?

然後我有一組函數用於從對象中檢索數據:Tcl_Get{String,Double,Int}FromObj()。但是,如果我以浮動形式閱讀,似乎沒有一個能夠提供我想要的價值。

在這一點上,我試圖從文檔中推理。可能是這樣的情況,Tcl_GetDoubleFromObj()將足夠靈活來處理這種情況......但似乎不是基於文檔的情況。

使用Tcl C API,應該如何從二進制文件中讀取浮點數?

+2

在C級別?獲取字節並直接轉換它們。這就是'binary'命令的作用。 ('Tcl_GetDoubleFromObj'解析一個可讀的字符串。) –

回答

1

我也不敢保證這是你Tcl_GetDoubleFromOjb()實施的來源,但它看起來像它可能是它的一個版本:http://tclsrc.tyabo.com/tclObj_8c-source.html

它看起來並不像它這樣做的一個直接轉換生雙。它看起來像是從TCL創建的對象中拉出一個double,而不是原始字節流。

也許你想看看binary scan作爲從你的二進制流中拉出浮動/雙打的方式嗎?

+0

感謝您指點我進行二進制掃描。雖然如果解決方案涉及對Tcl_Obj的內部進行黑客攻擊,那麼最好不要使用Tcl API來讀取數據。 –

+0

我認爲'binary scan'是TCL語言的一部分。無需破解任何東西。我只是展示了'Tcl_GetDoubleFromObj()'的實現來指出它可能不是你想要的。 –

+0

啊,對不起,我的錯。我仍然感覺我的方式圍繞這些工具。我在夜間閱讀和嘗試的內容越多,我就很確定自己正在尋求一些隱藏起來比我想象的更復雜的事情。感謝您的幫助! –

相關問題