尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【MATLAB】生成16进制.bin/.txt文件

【MATLAB】生成16进制.bin/.txt文件 生成16进制文件1. 生成.bin文件1.1 数组转32位16进制bin文件生成.txt文件1.1 数组转32位16进制.txt文件1.2 数组转28位16进制.txt文件1. 生成.bin文件1.1 数组转32位16进制bin文件%% Data to Bin% V20260813clc;clear;%数组大小V540;H480;% 路径设置bin_path./Output/Flash_data_GB.bin;%bin_path ./Output/Flash_data_GB.txt;ifexist(bin_path,file)delete(bin_path);end%% Data GenerateCounting_Datazeros(V,H,uint32);Counting_Data(:)randi([1,uint32(4294967295)],numel(Counting_Data),1,uint32);%% Data2Bin[folder,~,~]fileparts(bin_path);if~exist(folder,dir)mkdir(folder);endfidfopen(bin_path,wb);iffid-1error(打开失败权限问题);end% 行优先展开给FPGA矩阵每一行连续存入binvec_writeCounting_Data.;vec_writevec_write(:);fwrite(fid,vec_write,uint32,ieee-be);fclose(fid);clear fid;disp(bin文件输出完成);%% 回读检查fidfopen(bin_path,rb);iffid-1error(回读失败检查文件是否被Hex编辑器/其他软件占用);endvec_readfread(fid,numel(Counting_Data),uint32uint32,ieee-be);fclose(fid);clear fid;%复原矩阵tempreshape(vec_read,size(Counting_Data.));Counting_ReadBacktemp.;cmp_resultisequal(Counting_Data,Counting_ReadBack);disp([原始数据与回读数据比对结果,num2str(cmp_result)]);disp([Counting_Data(1,1) ,dec2hex(Counting_Data(1,1))]);disp([Counting_ReadBack(1,1) ,dec2hex(Counting_ReadBack(1,1))]);diff_maskCounting_Data~Counting_ReadBack;idx_difffind(diff_mask);disp([不相等元素总个数,num2str(length(idx_diff))]);生成.txt文件1.1 数组转32位16进制.txt文件%% 功能将数组数据输出十六进制TXT% 20260813clear;clc%% 数组大小设定V540;H480;%路径设定txt_path./Output/Flash_data_GB.txt;% 删除旧文件ifexist(txt_path,file)delete(txt_path);end%% 生成随机uint32数据Counting_Datazeros(V,H,uint32);Counting_Data(:)randi([1,uint32(4294967295)],numel(Counting_Data),1,uint32);%% 创建文件夹[folder,~,~]fileparts(txt_path);if~exist(folder,dir)mkdir(folder);end%% 行优先展开FPGA顺序不变vec_writeCounting_Data.;vec_writevec_write(:);%% 打开文件去掉encoding纯文本写入fidfopen(txt_path,w);iffid-1error(文件打开失败权限不足);end% 逐行写入8位大写十六进制fornumvec_writefprintf(fid,%08X\n,num);endfclose(fid);disp(十六进制TXT文件输出完成记事本打开正常显示);%% 回读校验fid_rfopen(txt_path,r);hex_linestextscan(fid_r,%s);fclose(fid_r);hex_cellhex_lines{1};vec_readuint32(hex2dec(hex_cell));tempreshape(vec_read,size(Counting_Data.));Counting_ReadBacktemp.;%% 结果打印cmp_resultisequal(Counting_Data,Counting_ReadBack);disp([原始数据与回读数据比对结果,num2str(cmp_result)]);disp([Counting_Data(1,1) ,dec2hex(Counting_Data(1,1),8)]);disp([Counting_ReadBack(1,1) ,dec2hex(Counting_ReadBack(1,1),8)]);diff_maskCounting_Data~Counting_ReadBack;idx_difffind(diff_mask);disp([不相等元素总个数,num2str(length(idx_diff))]);1.2 数组转28位16进制.txt文件%% 功能将28bit数据输出7位十六进制TXT% 20260813clear;clc% 数组大小V540;H480;%文件路径txt_path./Output/Flash_data_case3.txt;% 删除旧文件ifexist(txt_path,file)delete(txt_path);end%% 生成28bit随机数 范围1 ~ 2^28 - 1max_28bit2^28-1;Counting_Datazeros(V,H);%Counting_Data(:) 2^24;Counting_Data(2:11,3:11)2^23;Counting_Data(2:10,4:10)2^24;Counting_Data(2,3)2^22;Counting_Data(2,11)2^22;%% 创建文件夹[folder,~,~]fileparts(txt_path);if~exist(folder,dir)mkdir(folder);end%% 行优先一维展开FPGA顺序vec_writeCounting_Data.;vec_writevec_write(:);%% 写入TXT固定7位大写十六进制fidfopen(txt_path,w);iffid-1error(文件打开失败权限不足);endfornumvec_writefprintf(fid,%07X\n,num);endfclose(fid);disp(28bit数据已导出为7位十六进制txt记事本打开正常);%% 回读校验fid_rfopen(txt_path,r);hex_linestextscan(fid_r,%s);fclose(fid_r);hex_cellhex_lines{1};% 7位十六进制转回十进制vec_readhex2dec(hex_cell);tempreshape(vec_read,size(Counting_Data.));Counting_ReadBacktemp.;%% 校验结果cmp_resultisequal(Counting_Data,Counting_ReadBack);disp([原始数据与回读数据比对结果,num2str(cmp_result)]);disp([首个原始7位十六进制,dec2hex(Counting_Data(1,1),7)]);disp([首个回读7位十六进制,dec2hex(Counting_ReadBack(1,1),7)]);diff_maskCounting_Data~Counting_ReadBack;idx_difffind(diff_mask);disp([不相等元素总个数,num2str(length(idx_diff))]);
返回列表