Printf - 控制 %.2f (float32) 的输出
Printf - Controlling the output of a %.2f (float32)
我正在 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 字节中包含的数据是 16 位深度 pcm 音频样本,因此范围在 -32768 和 + 32768 之间。我的控制台的输出是不稳定的,因为有时有一个“-”符号,有时没有。因此,IT 使我很难进行分析,因为日志正在向左和向右移动。例如
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
有没有办法控制日志的宽度,使它们始终相等?
改为
printf("L: %6.2f || R: %6.2f \n", someDataL,someDataR);
// ^ ^
// |___________|_____ width modifier
或任何合理的数字作为宽度修饰符。
` ' (space) A blank should be left before a positive number produced by a signed conversion (a, A, d, e, E, f, F, g, G, or i).
printf("L: % .2f || R: % .2f \n", someDataL,someDataR);
我正在 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 字节中包含的数据是 16 位深度 pcm 音频样本,因此范围在 -32768 和 + 32768 之间。我的控制台的输出是不稳定的,因为有时有一个“-”符号,有时没有。因此,IT 使我很难进行分析,因为日志正在向左和向右移动。例如
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
有没有办法控制日志的宽度,使它们始终相等?
改为
printf("L: %6.2f || R: %6.2f \n", someDataL,someDataR);
// ^ ^
// |___________|_____ width modifier
或任何合理的数字作为宽度修饰符。
` ' (space) A blank should be left before a positive number produced by a signed conversion (a, A, d, e, E, f, F, g, G, or i).
printf("L: % .2f || R: % .2f \n", someDataL,someDataR);