2010-09-11 32 views
0
 I only get this 
 Float32 preferredBufferSize = 0.005; // 5 millis buffer 
    UInt32 size = sizeof(preferredBufferSize); 


    AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration, &size, 
       &preferredBufferSize); 
    printf("\n%d", kAudioSessionProperty_CurrentHardwareIOBufferDuration); 

如果我怎樣才能printf的結果就像0.0045

 printf("\n%.4f", kAudioSessionProperty_CurrentHardwareIOBufferDuration); 

我得到 73620479325976951480553954495833288118580890 5380376591296729466482703872896792123284994544877461533270472921226586720994654163338779026978512060081697113376452636514975744.0000 736204793259769514805539544958332881185808905380376591296729466482703872896792123284994544877461533270472921226586720994654163338779026978512060081697113376452636514975744.0000

回答

2

您使用的整數符號。改用float。

printf("\n%.4f", kAudioSessionProperty_CurrentHardwareIOBufferDuration); 
0
printf("\n%.4f", kAudioSessionProperty_CurrentHardwareIOBufferDuration); 

,如果你想在32位浮點數4位小數精度。如果您想要任意長度,請放棄.4。

1

你爲什麼要打印屬性ID而不是值? 如果你要打印毫秒像這樣做:

Float32 currentBufferSize; 
UInt32 size = sizeof(currentBufferSize); 
AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration, 
         &size, 
         &currentBufferSize); 
printf("\n%.4f", currentBufferSize);