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