2016-09-15 5 views
0
func readByte(bytes: [UInt8], offset: UInt8) -> UInt8 { 
    return bytes[offset] // Error: Cannot subscript a value of type '[UInt8]' with an index of type 'UInt8' 
} 

Если вы измените смещение на любой другой интервал, это приведет к той же ошибке. Однако, если я использую байты [0], проблем нет. Вероятно, потому что Свифт знает, какого типа ожидать и преобразует 0 соответственно. Мне интересно, что это за тип.Как получить байт (UInt8) из массива байтов ([UInt8])?

+1

'смещение: Int' должно работать. –

+0

или 'return bytes [Int (offset)]' –

+0

Martin R, это было единственное, что я не пробовал. UInt тоже не работал. Не могли бы вы разместить его в качестве ответа, чтобы я мог отметить его? – Mark

ответ

1

Массивы коллекции индексируются Int:

public struct Array<Element> : RandomAccessCollection, MutableCollection { 
    // ... 
    public typealias Index = Int 
    // ... 
    public subscript(index: Int) -> Element 
    // ... 
} 

В вашем случае:

func readByte(bytes: [UInt8], offset: Int) -> UInt8 { 
    return bytes[offset] 
} 
Смежные вопросы