Swift 3 uint64 переполняется при попытке назначить 64-битное целое число

Я пытаюсь реализовать битборды в Swift и пытаюсь сохранить 64-битное целое число в UInt64 и получить ошибку переполнения.

var white_queen_bb:uint64 = 0001000000000000000000000000000000000000000000000000000000000000 as UInt64;

Integer Literal '100000000000000000000000000000000000000000000000000000000000' overflows when stored into 'UInt64'

Я предполагаю, что случается так, что Swift обрабатывает число как десятичное целое число, а затем пытается преобразовать его в двоичное число, которое в итоге оказывается больше 64 бит.

Может кто-нибудь объяснить, пожалуйста, как я это сделаю. Спасибо

1 ответ

Решение

Ты прав. Swift по умолчанию обрабатывает числа как десятичные. Следовательно let i: UInt64 = 0100 будет иметь десятичное значение 100.

Если вы хотите использовать двоичное число в Swift, используйте 0b префикс:let j: UInt64 = 0b0100 будет иметь десятичное значение 4.

Другие вопросы по тегам