matlab byte 转 bit 函数编写


一、发送四个字节 的数据, 举例 :0x12345678  

  1. 将这 四个字节 转换成 BIT 序列 ; 转换时 遵循 两个 规则, 字节序是大端序 ,  bit序 是 高位 在前;
  2. 根据字节序是大端,0x12345678  发送的字节顺序是  0x12 ,  0x34,  0x56,   0x78
  3. 根据 bit序 是 高位 在前,  发送的第一个字节 0x12,bit 顺序是 [ 0 0 0 1 0 0 1 0] 

   matlab 代码 如下:

转换函数:

function bit_array = f_byte2bit( tx_data_byte_array )

% 测试接口
% tx_data_byte_array = [ 0x12, 0x34, 0x56, 0x78 ];

tx_data_byte_len = length(tx_data_byte_array);
fprintf( "byte2bit byte len = %d.\n", tx_data_byte_len );

% 根据 要转换的 字节数量 创建一个 一维矩阵 
bit_array = zeros( 1, tx_data_byte_len*8 );

for i=1:tx_data_byte_len
    %计算 bit 开始下表
    start_bit_index = (i-1)*8+1;
    %进行 bit 转换, 根据 bit 下标 存放到具体的位置
    bit_array(start_bit_index:start_bit_index+7)= int2bit( tx_data_byte_array(i), 8 );
end

fprintf( "byte to bit done, bit len = %d.\n", length(bit_array) );

  

调用接口:

 

% 清除 命令行 窗口
clc

% 从当前工作区中删除所有变量,并将它们从系统内存中释放。
clear

% 关闭所有窗口
close all

tx_data_byte = [ 0x12, 0x34, 0x56, 0x78 ];

tx_data_bit = f_byte2bit( tx_data_byte );

disp( tx_data_bit );

fprintf( "test f_byte2bit done.\n" );

 

运行结果:

byte2bit byte len = 4.
byte to bit done, bit len = 32.
     0     0     0     1     0     0     1     0     0     0     1     1     0     1     0     0     0     1     0     1     0     1     1     0     0     1     1     1     1     0     0     0

test f_byte2bit done.

 

posted on 2025-10-31 15:08  所长  阅读(21)  评论(0)    收藏  举报

导航