2016-12-06 3 views
0

Я новичок в разработке iOS, когда я храню непознанное число в массиве byte/UInt8, он показывает ошибку.Как сохранить отрицательное число в UInt8 Array

var iv: [UInt8] = [69, 56, 30, -78, -8, 9, 81, 37, -116, 56, -4, 95, -106] 

отрицательных целое переполняются при хранении в беззнаковом типе Uint8

отредактировал

Я использую его для шифрования цели, если я изменить он для подписания шифрового выхода будет изменен любой другой золь социологическое загрязнение? или как превратить его подписал в быстрой

+1

Почему бы вам просто не использовать подписанный int8? – ColdSteel

+3

'UInt' обычно означает« ** un ** signed integer ». т.е. нет негативов. –

+1

Вы не можете, целые числа без знака всегда, ну, без знака. Они не могут быть отрицательными. Измените тип на 'Int8'. – Leandros

ответ

2

Вы не можете, UInt это беззнаковое целое число означает неотрицательное, изменить тип вашего массива Int

+0

Thank @Marat но как я могу преобразовать его в беззнаковый массив? – Sumit

+0

m использовать его для шифрования как IV, как Инициализационный вектор, если я его сменил на подписанный шифр, будет изменен – Sumit

1

UInt8 является Unsigned Integer и имеет диапазон 0...255 так вас не может хранить значение, выходящее за пределы этого диапазона, означает не отрицательный и с 255, если вы хотите сохранить отрицательное значение, используйте Int8, а его диапазон - -128...127.

0

uint8 НЕОГРАНИЧЕН («u» в uint8) целое число. Он имеет диапазон от 0 до 255. Поэтому он не может хранить номера вне диапазона (отрицательные числа не находятся в диапазоне).

int8 - ЦЕНА SIGNED. Она идет от -128 до 127. или int16 (32768 до 32767) это вы должны хранить значения 128 до 255.

Вот хорошая таблица с диапазонами Целые:

wikipedia