16进制转10进制 转化方法一[概述]
%%%%%%16进制转10进制 转化方法一%%%%%%%%%%%% a=textread('c:\a.txt','%s')';%以字符形式打开文件
alpha=hex2dec(a)'; %16进制转化为10进制数,存入alpha矩阵 %%%%%%%16进制转10进制 转化方法二%%%%%%%%%%% [wenjian_ming,lujing_ming] = uigetfile('c:\a.txt','导入数据'); fid=fopen(strcat(lujing_ming,wenjian_ming),'r');
data=[];
while ~feof(fid)
m=fscanf(fid,'%3x',[1 inf]); data=[data;m]; %将读出的数据存入data矩阵中
end
alpha=data;
%%%%%%%保存文件方法一%%%%%%%%%%%%%% dlmwrite('c:\b.txt',alpha,'delimiter', ' ') %将得出数据存入新的b.txt文档 %%%%%%%保存文件方法二%%%%%%%%%%%%%% fid=fopen('c:\d.txt','w'); fprintf(fid,'%d ',alpha'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha2=alpha(1:2:length(alpha)-mod(length(alpha)+1,2)); %将奇数元素提取出来 dlmwrite('c:\c.txt',alpha2,'delimiter', ' ') %将得出数据存入新的c.txt文档 %%%%%%%画图%%%%%%%%%%%%%%
plot(1:length(alpha2),alpha2) %画图
matlab的大小端:big endian / little endian
matlab在读取十六进制文件时,也会有大小端的问题。 例如要读取十六进制数据文件:01 CB 07 4D
[filename, pathname, filterindex] = uigetfile( ...
{'*.txt','TXT (*.txt)'; ...
'*.dat','DAT-files (*.dat)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file', 'Untitled.dat');
fid=fopen([pathname filename],'rb', 'b'); % ‘b’--big endian
if (fid < 0)
display(sprintf('Could not open %s\n', filename));
return;
end
data = fread(fid,inf, 'bit16');
fclose(fid);
读出来的结果是:
data(0) = 0x01CB
data(1) = 0x074D
而如果用小端模式(little-endian),读出来的结果会是: data(0) = 0xCB01
data(1) = 0x4D07
fopen的默认模式是little-endian。
A=textread('filename.txt','%s'); B=cell2mat(A);
C=hex2dec(B);