哥, 我搞定了, 哈哈
clc
filename=’c:\Documents and Settings\User Name\My Documents\Spectral File.SPA’;
fid=fopen(filename,’r');
% Find the points number
fseek(fid,hex2dec(’234′),’bof’);
Number_of_DataPoints=fread(fid,1,’int32′);
%Find the maximum and minimum of Wavenumber (cm-1) range
fseek(fid,576,’bof’);
Maximum_Wavenumber=fread(fid,1,’single’);
Minimum_Wavenumber=fread(fid,1,’single’);
Interval=(Maximum_Wavenumber-Minimum_Wavenumber)/(Number_of_DataPoints-1);
Wavenumber=linspace(Minimum_Wavenumber,Maximum_Wavenumber,Number_of_DataPoints).’;
Wavenumber=flipud(Wavenumber);
%Find the Y-Axis data type: %Transmittance or Absorbance
fseek(fid,hex2dec(’360′),’bof’); Y_Label=char(fread(fid,14,’uchar’)');
% How to define the offset for spectral data still remains unresolved.
fseek(fid,hex2dec(’41c’),’bof’);
spectrum=fread(fid,Number_of_DataPoints,’single’);%’double’); % float64, %real*8
figure(1),plot(Wavenumber,spectrum,’r'); set(gcf,’color’,'w’);
set(gca,’xdir’,'rev’,'xcolor’,'b’,'ycolor’,'b’,'xlim’,[round(Minimum_Wavenumber),round(Maximum_Wavenumber)]);
xlabel(‘Wavenumber /cm^{-1}’); ylabel(Y_Label);
咋还在发这个玩意?
连qq都有了?
领一个吧~
排队排队!我要要
lenciel 回复说:
怎么给您?
你微博是啥?
lenciel 回复说:
您问哪个?qq?twitter?饭否?
哥, 我也要
顺便: 如何破解或逆向工程二进制格式的文件, 目标假想敌:Nicolet公司的红外光谱谱图文件*.spa格式的
http://t.qq.com/invite/d8c673a47ec8290b076f
我也发一个最近小薇送的太多了
哥, 我搞定了, 哈哈
clc
filename=’c:\Documents and Settings\User Name\My Documents\Spectral File.SPA’;
fid=fopen(filename,’r');
% Find the points number
fseek(fid,hex2dec(’234′),’bof’);
Number_of_DataPoints=fread(fid,1,’int32′);
%Find the maximum and minimum of Wavenumber (cm-1) range
fseek(fid,576,’bof’);
Maximum_Wavenumber=fread(fid,1,’single’);
Minimum_Wavenumber=fread(fid,1,’single’);
Interval=(Maximum_Wavenumber-Minimum_Wavenumber)/(Number_of_DataPoints-1);
Wavenumber=linspace(Minimum_Wavenumber,Maximum_Wavenumber,Number_of_DataPoints).’;
Wavenumber=flipud(Wavenumber);
%Find the Y-Axis data type: %Transmittance or Absorbance
fseek(fid,hex2dec(’360′),’bof’); Y_Label=char(fread(fid,14,’uchar’)');
% How to define the offset for spectral data still remains unresolved.
fseek(fid,hex2dec(’41c’),’bof’);
spectrum=fread(fid,Number_of_DataPoints,’single’);%’double’); % float64, %real*8
figure(1),plot(Wavenumber,spectrum,’r'); set(gcf,’color’,'w’);
set(gca,’xdir’,'rev’,'xcolor’,'b’,'ycolor’,'b’,'xlim’,[round(Minimum_Wavenumber),round(Maximum_Wavenumber)]);
xlabel(‘Wavenumber /cm^{-1}’); ylabel(Y_Label);
lenciel 回复说:
首先….用matlab读了几个数据,地址偏移量还是写死的magic number,你也就敢说自己是逆向工程二进制格式文件了…..本座猜你也就是用ultraedit之类的工具打开了别人的文件,琢磨出了大致的结构而已。
其次,matlab并不适合你做的事情,一上来就fseek也不对。你应该先redirect二进制数据流到文本中,后面的处理就是简单的作业了。
#!/usr/bin/env python
infile = file(“in.spa”,”rb”)
outfile = file(“out.txt”,”wb”)
def main():
while 1:
c = infile.read(1)
if not c:
break
outfile.write(hex(ord(c)))
outfile.close()
infile.close()
if __name__ == ‘__main__’:
main()
最后,不管你多兴奋,本座看这种小学生作业的兴趣一点儿都没有。你以后别贴我这儿了…
支持博主,华丽上场!
我学习的时间太少了.
不过ultraedit解决的问题已经足够了, 能够更进一步当然更好…
Thermo Scientific的人告诉我:
他们不公开*.spa文件的格式, 但是愿意卖软件给我…
我的目的其实就是为了玩
lenciel 回复说:
哥, 我想彻底破解. 推荐点教材吧.
谢谢哥了…
lenciel 回复说:
lenciel@gmail.com….欢迎来函来电…
顺便: QQ微博我早就有了,但是没写; Python的语法我还没开始学.
lenciel 回复说:
I don’t care…do you care???
哈哈,一猜就猜到了L的ID,估计也能找到偶像派的微博?
lenciel 回复说:
You can try…