Я хочу преобразовать UUID (NSUUID, уникальную строку, 128-бит) в число и сохранить его в SQLite (поскольку первичный ключ использует Core Data).Как сохранить 128-битное значение?
Как это сделать?
Я хочу преобразовать UUID (NSUUID, уникальную строку, 128-бит) в число и сохранить его в SQLite (поскольку первичный ключ использует Core Data).Как сохранить 128-битное значение?
Как это сделать?
Там, кажется, не много на межсетях, что делает то, что вы ищете, так что я предполагаю, что вы хотите возможно, не самая умная вещь.
Все, что я мог бы найти действительно был:
Все остальное, кажется, говорить о тексте вместо чисел
В соответствии с комментарием от Drew, то вторая ссылка теперь мертва. Тем не менее я нашел его в Вайбак машине:
Wayback machine version of: [sqlite] 128-bit numbers
Ключевые биты из этой дискуссии являются:
вт, 2005-05-03 17:52 -0400, Кристофер Petrilli писал :
Мне интересно, было ли доступно 128-битное число ? Причина, по которой я спрашиваю, заключается в том, что у меня есть приложение, которому необходимо сохранить IPv6-адреса, которые являются 128 бит. Прямо сейчас я храня их в 2 64-битных полях, но это явно усложняет запрос совсем немного.
Объявление поля как CLOB или TEXT и сохранение номеров таким образом. Вы можете сохранить любой размер, который вы хотите в столбце TEXT. Вы просто не можете сделать арифметику на них, если они больше 64 бит. Нужно ли вам сделать арифметику на ваших IPv6-адресах?
и
SQLite позволяет делать сравнения диапазона на BLOB. Он использует memcmp() для . До тех пор, пока вы вставляете свои данные в формат , который можно правильно сопоставить с помощью memcmp(), все должно быть хорошо.
Основные данные не имеют понятия первичных ключей и не обязательно используют SQLite в качестве резервного хранилища, поэтому это невозможно.
Если вы хотите, чтобы преобразовать строку UUID в двоичную, используйте
uuid_t uuid;
NSUUID *uuidString = [[[NSUUID alloc] initWithUUIDString:@"68753A44-4D6F-1226-9C60-0050E4C00067"] autorelease];
[uuidString getUUIDBytes:uuid];