Printf - 控制%。2f(float32)的输出

时间:2016-01-10 21:29:48

标签: c printf core-audio

我正在xcode命令行项目中注销音频单元渲染回调的原始数据。我从iodata参数获取数据并注销第一个" float32"这些缓冲区中的信息字节如下:

   Float32 someDataL = *(Float32*)(player->inputBuffer->mBuffers[0].mData);
   Float32 someDataR = *(Float32*)(player->inputBuffer->mBuffers[1].mData);

   printf("L: %.2f || R: %.2f \n", someDataL,someDataR);

这个问题是关于如何在控制台中控制这些内存缓冲区的输出。这些缓冲区的第一个float32字节中包含的数据是16bit深度的pcm音频样本,因此范围介于-32768和+ 32768之间。我的控制台的输出比不稳定,因为有时会出现" - "标志,有时没有。因此,由于日志向左右移动,因此我很难进行分析。例如

L: -0.00 || R: -0.00 
L: -0.00 || R: -0.00 
L: 0.00 || R: 0.00 
L: 0.00 || R: 0.00 
L: -0.00 || R: -0.00 
L: -0.00 || R: -0.00 
L: -0.00 || R: -0.00 
L: -0.00 || R: -0.00 
L: -0.00 || R: -0.00 

有没有办法控制日志的宽度,使它们始终相等?

2 个答案:

答案 0 :(得分:1)

来自printf(3) man page

  

`'(空格)在签名转换(a,A,d,e,E,f,F,g,G或i)产生的正数之前应留下空白。

printf("L: % .2f || R: % .2f \n", someDataL,someDataR);

答案 1 :(得分:0)

将其更改为

printf("L: %6.2f || R: %6.2f \n", someDataL,someDataR);
//          ^           ^
//          |___________|_____ width modifier

或任何合理的数字作为宽度修饰符。