Ios 类型';Int';没有下标成员
我写了一个函数:Ios 类型';Int';没有下标成员,ios,swift,Ios,Swift,我写了一个函数: func rms16(buffer: Int, bufferSize: Int) -> Float { let sum: Float = 0.0 let mySize: Int = bufferSize / sizeof(CShort) var buffer_short: Int = buffer for var i = 0; i < mySize; i++ { sum
func rms16(buffer: Int, bufferSize: Int) -> Float
{
let sum: Float = 0.0
let mySize: Int = bufferSize / sizeof(CShort)
var buffer_short: Int = buffer
for var i = 0; i < mySize; i++ {
sum += buffer_short[i] * 2
}
let sqrt1: Float = sqrtf(sum / Float(mySize))
return (sqrt1) / Float(mySize)
}
func rms16(缓冲区:Int,缓冲区大小:Int)->Float
{
设和:浮点数=0.0
让mySize:Int=bufferSize/sizeof(CShort)
var buffer_short:Int=buffer
对于变量i=0;i
上述函数在for
循环中显示如下错误:
类型Int
没有下标成员
有人告诉我如何修复它吗?缓冲区\u short是一个整数变量,而不是整数数组。 您需要将函数的第一个参数更改为整数数组,如:
func rms16(buffer: [Int], bufferSize: Int) -> Float
{
let sum: Float = 0.0
let mySize: Int = bufferSize / sizeof(CShort)
var buffer_short = buffer
for var i = 0; i < mySize; i++
{
sum += buffer_short[i] * 2
}
let sqrt1: Float = sqrtf(sum / Float(mySize))
return (sqrt1) / Float(mySize)
}
func rms16(缓冲区:[Int],缓冲区大小:Int)->Float
{
设和:浮点数=0.0
让mySize:Int=bufferSize/sizeof(CShort)
var buffer_short=缓冲区
对于var i=0;i
您的注释表明第一个参数应该是指向字符缓冲区的指针。相应的Swift类型为UnsafePointer
。还请注意,您正在乘以2
而不是在你的Swift代码中求平方,那和必须是
声明为变量
所以你的Swift功能是
func rms16(buffer: UnsafePointer<CChar>, bufferSize: Int) -> Float
{
var sum: Float = 0.0
let mySize = bufferSize / sizeof(CShort)
// Create a pointer to a buffer of `CShort` elements from the given pointer:
let buffer_short = UnsafeBufferPointer<CShort>(start: UnsafePointer(buffer), count: mySize)
for var i = 0; i < mySize; i++ {
sum += pow(Float(buffer_short[i]), 2)
}
let sqrt1 = sqrtf(sum / Float(mySize))
return (sqrt1) / Float(mySize)
}
您将buffer\u short
声明为Int
。那不是数组。那只是一个整数。你是说[Int]
而不是Int
?谢谢你的回答..我的目标c代码:-(float)rms16:(有符号字符*)buffer bufferSize:(NSUInteger)bufferSize{float sum=0.0;NSUInteger mySize=bufferSize/sizeof(short);short buffer_short=(short)buffer;for(整数i=0;ilet sum = buffer_short.reduce(0.0, combine: { $0 + pow(Float($1), 2)} )