使用Matlab读取txt文件中的ASCII码字符

发布网友 发布时间:2022-04-24 09:03

我来回答

3个回答

热心网友 时间:2022-06-18 08:33

问题二可以比较简单的解决:

fid = fopen('222.txt');
C = fread(fid, inf, 'int32', 0, 'b');
fclose(fid);

得到C就是要求的矩阵。


问题一先给一个不完全正确的程序:

fid = fopen('111.txt');
C = textscan(fid,'%s');
fclose(fid);
C = reshape(C{1}, 4, []).';
CM = cell2mat(C);
Data = hex2dec(CM)
Data = int32(Data)

问题一的主要麻烦在于,表示负整数的十六进制字符串比如“FFFFFE90”使用hex2dec时,其最高位的1不被认为是负数标志,而被当做更大的整数处理。因此强制转换成int32类型后,这些负数都截断成了int32的最大允许值。这里还需要进一步处理。

热心网友 时间:2022-06-18 08:34

问题2要在先,问题1在后
读取数据很容易,假定文件为randi-1.bin
f6 = 'randi-1.bin'
fid1 = fopen(f6)
xx3 = fread(fid1,1024,'integer*4',0,'b');
fclose(fid1)
结果比如:
>> xx3(1:3)
ans =
568
984
941

第二步把数据再转为hex写出即可

xx4 = fi(xx3, 1, 32, 0);
xx5 =upper(hex(xx4));

fid = fopen('randi-2.txt', 'w');
fprintf(fid,xx5','%s')
fclose(fid);

结果文件randi-2.txt中为(我没有加空格)
00000238000003D8000003AD00000309000000F5000002D3000000AB....

句子简单,但用的函数比较高级,你可能需要一定基础才能看懂

热心网友 时间:2022-06-18 08:34

你还是把txt传上来看看吧追问不会传啊。

追答你加我qq 810783453

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com