将char类型的数组转换为十六进制值

89次观看(过去30天)
罗伯特·斯科特
罗伯特·斯科特 2021年7月30日
编辑: dpb 2021年7月31日
我有一个字符数组从csv读取
我想在处理数据之前将整个数组转换为十六进制值
这节省了我的计算时间,不需要调用hex2dec或hex2binaryvector 50000次
有人有什么想法吗?

答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2021年7月31日
我刚刚进行的使用查找表的编辑是目前最快的方法,比dec2hex()快50多倍。

dpb
dpb 2021年7月31日
我回去发现了你大约一周前的第一张照片,并在那里做了评论。
简而言之,接受沃尔特当时的建议,两者都可以 textscan fscanf readmatrix 并在C i/o库中对输入进行转换。
不愿意分享 任何东西 ;即使是具有典型结构的假数据文件也在很大程度上限制了所能获得的具体数据。
4评论
dpb
dpb 2021年7月31日
编辑:dpb 2021年7月31日
除第一个和最后一个角外,它是十六进制的。
那么它们是什么呢?格式必须逐列匹配以读取正确的类型;否则就会得到MATLAB认为应该的结果,默认情况下十六进制是char()
"你说的编码是什么意思"
文件中是否有任何前导0X前缀或类似的东西,或者只是十六进制数字字符串。
格式字符串编码 textscan 十六进制输入的用途如下: < textscan formatSpec >
转换输出
说明符
十六进制数量,无符号整数%徐int64
% xu8u int8
% xu16u int16
% xu32u int32
% xu64u int64
十六进制数量签署了整数% xs8 int8
% xs16 int16
% xs32 int32
% xs64 int64
那么,以上哪些是你的价值观呢?
再一次,它将是 所以 如果你只是附加一个小的样本文件,即使数据是随机的——任何人都不能单独使用一组十六进制数字,即使它们是真实的数字。
如果第一/最后一列中有一些专有的内容,只要它是相同的数据类型,就可以混淆它。
但是,我确实发现了一件我不知道的事我一直以为是这样的那就是沃尔特之前的反应 readtable 和朋友有 还被扩展到接受十六进制类型作为输入——为什么,我不知道;似乎是个明显的疏忽。
所以,我们下降到较低级别的例程,但如果速度是目的,他们更好,无论如何,只是多一点前期工作-尽管沃尔特也表明,通过查找表从十六进制转换可以非常快。
最后一个问吗?关于文件结构——大小是先验已知的,还是可以从其他信息中推断出来,还是长度未知,但列数固定,或两者都有?最重要的是要知道有多少列,尽管可以通过读取第一个记录并计算分隔符来找出,但如果知道了先验,就可以保存步骤以及动态构建一个格式字符串来匹配固定的格式字符串。

登录发表评论。

s manbetx 845


释放

R2020b

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!