matlab写出十六进制文件到txt

小弟做视频压缩。。通过各种算法后最终产生一组数据流。。。假设数据流是十六进制的 00000178B3,用dlmwrite输出的只有ascii码,小弟想要的是十六进制码,不知是否有方法?

第1个回答  2013-03-21

没太懂你的意思。我理解是你已经得到了十六进制的字符串,想写进文件中对么?用fprintf吧,跟C语言里边的一样,看我下边的程序,执行了几遍的结果:

追问

不好意思没表述清楚。。。00 00 01 78 B3 是我想要的十六进制,如果写到txt,就会变成char型,这时十六进制就会变成 30 30 30 30 30 31 37 38 41 33,也就是ascii编码了。。。。我想要的是00 00 01 78 B3而不是30 30 30 30 30 31 37 38 41 33

追答

你依然没有说清楚。你这个十六进制数是什么格式?是字符串格式么?

如果你是字符串格式,按照我这样来就没问题了么~

fp=fopen('a.txt','a+');
num=dec2hex(96435,10);
fprintf(fp,'%s ',num);
fclose(fp);

追问

我想要hex,而不是字符串。。写在txt没法实现的,因为都是char了

追答

你能不能说清楚点啊?

你想要hex,那你想把什么变成hex么?你不是说你那个数据流是hex的么?天上掉下来的是林妹妹,不是hex!

本回答被网友采纳
第2个回答  2013-03-26
我也想问这个问题~你把十六进制写到文件里面,然后用vc编译器打开它可以显示十六进制,不知能否符合你的要求呢?追问

我就是想要这样的效果,可是matlab中一写到txt,十六进制就变成char型了。。不知道如何解决

追答

clear ;
data_fname = 4.txt' ; % 这里是16进制文件名
matlab是默认二进制形式打开文件的
file_id = fopen(data_fname, 'rb');
% 先手工构造一个1x16大小的矩阵
raw_data = [1:1:16] ;
while feof(file_id) == 0
% 数据类型是int8,这样就是8个比特吧,正好是16进制的两个字符
% raw_array每次都是读16x1的矩阵,ele_count为读入的数的个数(这个数随便取)
[row_array, ele_count] = fread(file_id, 16, 'int8') ;
if ele_count < 16 % elecount < 16代表数据不够,已经到了文件的结尾
break ;
else
% 将16x1的row_array转置一下,变为1x16的矩阵
row_array = row_array' ;
% 然后,将row_array追加到raw_data中
raw_data = [raw_data; row_array] ;
end
end
% get off the first line [1:1:512]
% 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了
raw_data(1,:)=[] ;
% 关闭文件
fclose(file_id);
%下面要转为16进制了

raw_data(find(raw_data<0))=raw_data(find(raw_data<0))+256;
b=dec2hex(raw_data);%以列顺序转换
%现在就得到了字符显示的十六进制的数据,接下来应该可以写到文本里去了吧

如何用matlab导入十六进制的数
将你的16进制数据保存到txt文件中,打开MATLAB选择workspace->importdata,导入txt文件中的数据,这样会得到cell格式数据(假设名字为textdata),调用函数hex2dec即可,a=hex2dec(textdata),a就是你所想要的数据

在matlab中,怎么把有符号16进制数转化为十进制数。
代码功能实现将有符号的十六进制数据转换为有符号的十进制数据并存储到txt文件:clear all clc 读入十六进制数据 fid = fopen('C:\\Users\\Administrator\\Desktop\\test\\data_hex.txt', 'r+');if fid == -1 disp('fopen failed');else ReadData = textscan(fid,'%s');end fclose(fid);从元胞...

使用matlab在txt文本中提取十六进制数,读取规定数据之后的某些数,里面...
输入如下命令 f=fopen('Zone1.txt');A=char(fread(f,'char'))';%A即是文本文件中的内容 fclose(f);B=regexp(A,'(?<=FF\\s+AA\\s+B1\\s+\\w\\w\\s+)\\w\\w\\s+\\w\\w','match')%B即提取了所要的内容

如何将MATLAB运行结果写入txt文件
可以运用save语句。matlab 常见的打开方式:1、‘r’:只读方式打开文件(默认的方式),该文件必须已存在。2、‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。3、‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。4、‘w+’:读写方式打开文件。先读后写。该文件已存在...

matlab如何写32位的十六进制顺序数
1、首先将十六进制数保存为txt或xlsx文件,在matlab中使用importdata。2、其次输入类型选择text,输出类型选择stringarray。3、最后使用hex2dec将stringarray转换为矩阵即可。

Matlab怎样读取txt文件中的十六进制数
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...

想请教一下用MATLAB提取文本文档里面的特定的十六进制数,然后换成十...
1)先读取txt文件 a=textread('c:\\a.txt','%s')';%以字符形式打开文件 2) 打开文件后查看读取的矩阵格式 alpha=hex2dec(a)'; %16进制转化为10进制数,存入alpha矩阵 3) 导入excel表格用xlsread,具体用法网上有介绍

matlab将工作区中的变量保存成十六进制写入硬盘文件
t=0:1\/44100:2047\/44100;x=12288*sin(2*pi*5000*t)+12288;k=length(x);for i=1:k if x(i)<0 x(i)=x(i)+256;else end x(i)=floor(x(i));end x=dec2hex(x);save C:\\Users\\Li\\Documents\\MATLAB\\test.dat x 负数和小数都不能化成十六进制的,需处理。

matlab中如何将十六进制转换为十进制?
matlab中将十六进制转换为十进制的方法是: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,...

matlab怎么将十六进制数转换为中文
1、首先打开matlab软件,点击左上方的新建脚本按钮,新建一个空脚本。2、然后开始写代码,在新建的matlab文件中先定义一个三行四列的的cell数组,这里C元素以“;”为间隔,表示一列元素,即1234为一列,5678为一列,依此类推。3、最后点击上方的运行按钮,在下方的命令行窗口就可以看到转换的结果了。

相似回答