Matlab中十六進製制和二進位制值數轉換

2021-10-07 02:46:38 字數 3024 閱讀 1946

目錄

使用十六進製制和二進位制表示法表示整數

將十六進製制和二進位制值表示為文字

將十六進製制值構成的陣列表示為文字

將二進位制表示轉換為十六進製制表示

使用二進位制值的按位運算

可以將數字表示為十六進製制或二進位制值。在某些情況下,這些表示方式更加方便。例如,可以使用二進位制值來表示硬體暫存器的位。在matlab® 中,有兩種方式來表示十六進製制和二進位制值:

matlab 中的一些函式可用於將數字與其十六進製制及二進位制表示相互轉換。

十六進製製字面值以0x0x字首開頭,而二進位製字面值以0b0b字首開頭。matlab 將採用這種表示法的數字儲存為整數。例如,以下兩個字面值都表示整數42

a = 0x2a

a = uint8

42b = 0b101010

b = uint8

42

當用此表示法表示數字時,不要用引號。使用0-9a-fa-f表示十六進製制數字。使用01表示二進位制數字。預設情況下,matlab 將數字儲存為能夠容納它的最小無符號整數型別。但是,可以使用可選字尾來指定儲存該值的整數型別。

例如,要儲存為有符號 32 位整數的十六進製製字面值的表示如下。

a = 0x2as32

a = int32

42

指定有符號整數型別時,您也可以將負數寫作字面值。用 2 的補碼形式表示負數。例如,您可以使用字尾s8以字面值指定負數。

a = 0xffs8

a = int8

-1

還可以使用dec2hexdec2bin函式將整數轉換為字元向量,以十六進製制或二進位制值表示它們。將整數轉換為十六進製制。

hexstr = dec2hex(255)

hexstr =

'ff'

將整數轉換為二進位制。

binstr = dec2bin(16)

binstr =

'10000'

由於這些函式生成文字,因此當需要表示數值的文字時,可以使用這些函式。例如,可以將這些值追加到標題或圖標籤上,或將它們寫入以十六進製制或二進位制表示形式儲存數字的檔案中。

要將數值陣列轉換為文字,推薦的方法是使用compose函式。此函式返回與輸入數值陣列大小相同的字串陣列。要生成十六進製制格式,請使用%x作為格式設定符。

a = [255 16 12 1024 137]

a = 1×5

255 16 12 1024 137

hexstr = compose("%x",a)

hexstr = 1x5 string array

"ff" "10" "c" "400" "89"

dec2hexdec2bin函式還將數值陣列轉換為文字,以十六進製制或二進位制值表示它們。但是,這些函式返回字元陣列,其中每行表示輸入數值陣列中的乙個數字,必要時用零填充。

要將二進位制值轉換為十六進製制值,請從二進位製字面值開始,並將其轉換為表示其十六進製制值的文字。由於字面值會被解釋為數字,可以將其直接指定為dec2hex的輸入引數。

d = 0b1111;

hexstr = dec2hex(d)

hexstr =

'f'

如果從十六進製製字面值開始,則可以使用dec2bin將其轉換為表示其二進位制值的文字。

d = 0x8f;

binstr = dec2bin(d)

binstr =

'10001111'

二進位制數的乙個典型用途是表示位。例如,許多裝置都有暫存器,用於訪問代表記憶體中資料或裝置狀態的位集合。當使用這樣的硬體時,可以在 matlab 中使用數字來表示暫存器中的值。使用二進位制值和按位運算來表示和訪問特定位。建立乙個表示 8 位暫存器的數字。從二進位制表示開始很方便,但該數字是以整數形式儲存的。

register = 0b10010110

register = uint8

150

要獲取或設定特定位的值,請使用位運算。例如,使用bitandbitshift函式獲得第五位的值。(將該位移至第乙個位置,以使 matlab 返回01。在此示例中,第五位是1。)

b5 = bitand(register,0b10000);

b5 = bitshift(b5,-4)

b5 = uint8

1

要將第五位翻轉為0,請使用bitset函式。

register = bitset(register,5,0)

register = uint8

134

由於register是整數,請使用dec2bin函式以二進位制格式顯示所有位。binstr是字元向量,表示不帶0b字首的二進位制值。

binstr = dec2bin(register)

binstr =

'10000110'

十六進製制位元組 十六進製制轉二進位制

做專案也將近一年的時間了。從一開始就經常提到 乙個十六進製制位元組 然而一開始就是迷惑的,直到現在。乙個十六進製制位元組,比如 ff。周圍的人經常說這是乙個十六進製制位元組。然後我就想,這不是兩個字元嗎,分別是f 和f,乙個字元是乙個位元組,兩個字元是兩個位元組,怎麼就成乙個十六進製制位元組,就成乙...

matlab 如何讀取二進位制 十六進製制txt文件

本方法同樣適合讀取十六進製制和二進位制以外的其他進製檔案,txt使用乙個最簡單的命令就可以讀取 textread 這是乙個十分有用,簡便的函式 對於fopen fscanf而言 讀取二進位制txt檔案 假如txt文件中內容為0001 0010 0011 0100 1000,儲存在pin.txt文件中...

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

這幾天在做乙個與plc互動的系統,plc會傳過來一些指令,這些指令是二進位制的格式,要轉為4位十進位制的指令來讀,下面是 部分 public class byteschange int beginindex 0 int length 16 string instructions while true...