十六进制Matlab输出格式错误

时间:2012-04-19 02:49:10

标签: matlab printf

我在matlab中有一个双数组,其元素以十六进制格式输出到文件中。我想输出它没有小数位,当输出的值是负数时,我似乎无法弄清楚如何做到这一点。我试过了:

    >> A = ones(1,4);
    >> fid = fopen('test.txt', 'r');
    >> value = A(2);
    >> fid = fopen('test.txt', 'w');
    >> fprintf(fid,'%x\r\n', value);
    >> fprintf(fid,'%.0x\r\n', value);
    >> value = -value;
    >> fprintf(fid,'%.0x\r\n', value);
    >> fprintf(fid,'%0.0x\r\n', value);
    >> fprintf(fid,'%0.0x\r\n', value);
    >> fprintf(fid,'%1.0x\r\n', value);
    >> fprintf(fid,'%x\r\n', value);

输出文件如下:

    1
    1
    -1e+000
    -1e+000
    -1e+000
    -1e+000
    -1.000000e+000

我真的只是希望它能够打印出'-1';

很抱歉,如果这很明显,但很难找到这些信息,因为有太多不同的格式。

1 个答案:

答案 0 :(得分:1)

您是否尝试将value = -value;更改为value = round(-value);

或者,仅输出绝对值,但如果值为负,则前缀为“ - ”:

if value < 0, 
  fprintf('-%x', abs(value));
else
  fprintf('%x', abs(value));
end