"sizeof"가있는 배열의 길이를 가져 오려고합니다. 나는 모든 것을 시도했다. 다음과 같은 오류 메시지가 표시됩니다. "[Int32]는 T.Type으로 변환 할 수 없습니다."Swift는 Int32 배열과 함께 sizeof를 사용합니다.
배열은 Int32 여야합니다.
var testArray: [Int32] = [2000,400,5000,400]
var arrayLength = sizeof(testArray)
"sizeof"가있는 배열의 길이를 가져 오려고합니다. 나는 모든 것을 시도했다. 다음과 같은 오류 메시지가 표시됩니다. "[Int32]는 T.Type으로 변환 할 수 없습니다."Swift는 Int32 배열과 함께 sizeof를 사용합니다.
배열은 Int32 여야합니다.
var testArray: [Int32] = [2000,400,5000,400]
var arrayLength = sizeof(testArray)
당신은 단순히 사용됩니다
let count = testArray.count
및
var arrayLength = testArray.count * sizeof(Int32)
// Swift 3:
var arrayLength = testArray.count * MemoryLayout<Int32>.size
sizeof
와 그 요소의 총 바이트 수와 배열의 요소 수를 얻을 수 있습니다 형식과 sizeofValue
값이 있으므로 모두
var arrayLength = sizeof([Int32])
var arrayLength = sizeofValue(testArray)
을 컴파일하십시오. 그러나 그것은 당신에게 struct Array
의 크기를 주며, 요소 저장 공간의 크기는 이 아닙니다.
Xcode 8에서 Swift 3 beta 6에는 sizeof() 함수가 없습니다. 그러나 원할 경우 필요에 맞게 정의 할 수 있습니다. 좋은 소식은,이 새로운 sizeof 함수가 배열에서 예상대로 작동한다는 것입니다.
let bb: UInt8 = 1
let dd: Double = 1.23456
func sizeof <T> (_ : T.Type) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ : T) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ value : [T]) -> Int
{
return (MemoryLayout<T>.size * value.count)
}
sizeof(UInt8.self) // 1
sizeof(Bool.self) // 1
sizeof(Double.self) // 8
sizeof(dd) // 8
sizeof(bb) // 1
var testArray: [Int32] = [2000,400,5000,400]
var arrayLength = sizeof(testArray) // 16
변수의 크기를 가져오고 데이터 유형 및 배열의 올바른 크기를 얻으려면 모든 버전의 sizeof 함수가 필요합니다.
두 번째 함수 만 정의하면 sizeof (UInt8.self) 및 sizeof (Bool.self)는 "8"이됩니다. 처음 두 함수 만 정의하면 sizeof (testArray)는 "8"이됩니다.
바이트 단위의 배열 길이가 필요합니다. 코드가 컴파일되지 않습니다. – Darx
@Darx : 업데이트 된 답변보기. –
감사합니다. 작품과 나는 행복하다. 2 시간의 낭비 ... 어쨌든 이제는 효과가 있습니다. :) – Darx