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

2022-04-10 02:58:09 字數 1435 閱讀 5647

**:

在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 =

ff0a

11f6

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矩陣中

endalpha=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中將十六進製制轉換為十進位制方法

matlab中將十六進製制轉換為十進位制方法 a textread c a.txt s 以字元形式開啟檔案 alpha hex2dec a 16進製制轉化為10進製數,存入alpha矩陣 16進製制轉10進製 轉化方法二 wenjian ming,lujing ming uigetfile c a....

Matlab 十進位制負數轉換十六進製制,簡單實用

需要對乙個數字矩陣進行乙個資料的歸一化,把十進位制數最終轉化成3個位元的十六進製制,也就是24位的數。直接用 函式 dec2hex 因為有負數和小數的存在,需要額外的處理,小數還比較好解決,根據設計,直接四捨五入取整就好,不需要保留小數。對於負數轉十六進製制,matlab沒有相關的函式可以直接轉換。...

十進位制和十六進製制轉換

在c 中,十進位制和十六進製制轉換非常簡單,方法如下 十進位制轉為十六進製制 1 int a 100 2 string stra a.tostring x8 十六進製制轉為十進位制 1 int b int32.parse 266 system.globalization.numberstyles.h...