在MATLAB中實現十進制和十六進制數的轉化方法


轉自:http://hsanyi.blog.163.com/blog/static/55022325201261524922278/

在MATLAB中算出了一個十進制的數組(有幾百個單元),如何把這些十進制的書轉化為16進制呢?

如果是正數直接使用dec2hex函數。如果是負數,將其轉換為反碼再用dec2hex。 

轉換規則:對N位二進制表示的有符號十進制數,其數值范圍為-2^(N-1)~2^(N-1)-1,對正數n,對應十六進制數為dec2hex(n)對負數n,對應十六進制數為dec2hex(2^(N+1)+n)。

例:a=[-1 10 17 -10 9],需轉換為一個字節的十六進制表達。
需將其中的負數轉換為相應的反碼,n = n + 256 
使用 a(find(a<0))=a(find(a<0))+256 
得到
a =
   255    10    17   246     9
再用
dec2hex(a) 
得到
ans =
FF
0A
11
F6
09

 

 

%%%%%%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) %畫圖



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM