我想从包含一列24位有符号十六进制值的ascii文件中绘制每个第9个元素
ex.
813457
123456
241566
etc..
问题是,我无法让Matlab将值800000-FFFFFF视为负值,大概是因为它没有将其扩展为32位。
我想把它分解成字符串然后转换,但是sscanf需要'0x'来转换有符号的%i十六进制值,所以我不得不使用unsigned:
C = textscan(fp, '%s') %generates 16380x1 cell (instead of normal array?!)
sscanf (C{1,1}{1,1}, '%x') %convert first ascii hex element from cell to unsigned hex
有趣的是,作为一个测试,只需执行hex2dec('FFC00000')就会生成一个正数,如何强制将文件中的所有ascii行导入为带符号的24或32位数据?
答案 0 :(得分:0)
要进行所需的转换,您可以按以下步骤操作:
double
,从十六进制字符串转换为herx2dec
类型的正整数,正如您已经完成的那样。uint32
类型。typecast
将uint32
值解释为int32
(转换数据类型而不更改基础数据)。示例:
>> typecast(uint32(hex2dec('FFC00000')),'int32')
ans =
-4194304