matlab byte 转 bit 函数编写
一、发送四个字节 的数据, 举例 :0x12345678
- 将这 四个字节 转换成 BIT 序列 ; 转换时 遵循 两个 规则, 字节序是大端序 , bit序 是 高位 在前;
- 根据字节序是大端,0x12345678 发送的字节顺序是 0x12 , 0x34, 0x56, 0x78
- 根据 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.
浙公网安备 33010602011771号