如何從 JSL 十六進製文件中提取指定數據到十進製文件?“Min1.dat”是一個十六進製文件。我已經把這兩個表的數據保存在這個DAT文件中了。
例如,編碼為“113027”的文件的原始數據是這樣的。

腳本Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?感謝克雷格!
感謝您的細心指導和幫助,使我了解更多。
當我以同樣的方式處理更多編號的數據時,我也發現了很多問題。
我改用VBA控制鼠標實現自動使用文檔獲取數據,減少手動操作。更重要的是減少出錯的機會。
再次感謝專家。
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?您的文件可能有小端數字。 但是如果沒有文件格式的文檔,您無法確定文件中沒有其他位選擇 Big vs Little 表示。 可能有很多位決定二進制數據的形狀,如果生成數據的程序使用不同的選項/數據/環境運行,它們可能會發生變化。
關於小尾數的有趣事實: 6502古代 Apple II 計算機中的處理器使用 Little Endian,因為它可以更快地將兩個 2 字節數字相加。 低位字節的添加可以與獲取隨後的高位字節並行完成。 然後可以將進位傳播到高位字節。
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?此計算必須反轉十六進制結果才能得到正確的結果。
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?現在只能用日期的數值來定位和計算期間的數據。

Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?我明白了,如果工具可用,我可以使用此代碼一步完成。非常感謝!
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?那不是真正的軟件。 我的意思是任何軟件都在輸出這個數據文件。Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?非常感謝!
我沒找到
"DatFileCreator.exe"
文件在我的搜索中。
我以前用過類似的軟件,但現在DAT數據變了,軟件不再可用了。

Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?您知道該軟件是否具有執行該任務的命令行選項嗎?我見過一些程序有一些功能的 CLI 版本。
如果你幸運的話,你也許可以做類似的事情
Names default to here(1);
RP = Run Program(
Executable( "DatFileCreator.exe" ),
Options( { // all of these options are made up but I've seen programs have them before.
"-export 1"
, "-filepath 'C:\Fake\somefile.dat'"
, "-exportpath 'C:\Fake\sometxtfile.txt"
} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
dt = open("C:\Fake\sometxtfile.txt");
我會先查看他們的命令行參數。另外,如果他們更新文件格式,他們**應該**更新他們的導出功能,而您不必重寫它。
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?感謝Craige的嚴謹態度。
我的DAT數據是免費軟件數據,在軟件的窗口界面操作可以直接導出TXT格式數據,
比如這兩個代碼“113027”、“123029”的數據是在軟件中導出的。
我就是想知道如何讓JMP在這個軟件中直接讀取DAT文件中的數據,
這樣就無需在軟件界面中手動導出數據將TXT文件保存到硬盤,然後雙用JMP將TXT文件導入硬盤。
感謝專家的幫助。
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?@lwx228當我試圖在沒有適當文檔的情況下從二進製文件中提取信息時,我必須考慮接下來會發生什麼:文件格式可能會改變;我可能不在支持我的 hack;我可能真的不明白格式。 如果創建文件的供應商提供了用於操作文件的工具,您應該使用它們。 如果供應商記錄文件格式,您應該使用該文件。

Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?我使用“包含”來確定時間數據的位置,但發現它效率低下。
b = Load Text File( "D:\0\Min1.dat", blob() ); // load your file
hex = Hex( b );
last4hex = Right( hex, 8 );
num = Length( b );
last4blob = Blob Peek( b, Length( b ) - 4, 4 );
da1 = "B38DCF77";//B3~8D~CF~77
da2 = "B48DCF77";
off1 = Contains( hex, da1 );
off2 = Contains( hex, da2, -1 );
If( off1,
hex = Substr( hex, off1, Length( hex ) )
);
If( off2,
hex = Substr( hex, 1, off2 + 1 )
);
mat = Blob To Matrix( b, "int", 4, "big" );

Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?如何使用 JSL 高效定位數據,恢復浮點數據,只提取指定數據?
如何使用 JSL 直接從十六進製文件中提取所有編碼為“113027”的數據?
謝謝專家!
Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?我在 HxD.exe 的文件“113027”的第一行中找到了十六進制符號。
數據 2010090931 的十六進制數是“B38DCF77”,數據 2010090932 的十六進制數是“B48DCF77”

Re: 如何從 JSL 十六進製文件中提取指定數據到十進製文件?用“HxD x64.Exe”打開“min1.dat”查看具體的十六進制符號。
使用 Craige 編寫的 JSL 腳本也可以看到這一點並顯示相同的內容。
b = Load Text File( "D:\0\Min1.dat", blob() ); // load your file
hex = Hex( b );
