Представление n-битных целых чисел без знака в mysql - PullRequest
2 голосов
/ 24 июня 2011

Как мне представить эти данные в mysql?

16 bit unsigned integer -----Range: 0x0000 - 0xFFF7
64 bit unsigned int.  Depicted as xx:xx:xx:xx:xx:xx:xx:xx -----Range: 0x0000 - 0xFFFFFFFFFFFFFFFF
2 bits ----- 00 - None,  01 - Residential  Security,  10 - High Security
32 bit unsigned int

Должен ли я преобразовать все в строку и преобразовать это на прикладном уровне?

Ответы [ 2 ]

4 голосов
/ 24 июня 2011

Согласно Обзор числовых типов MySQL :

  • UNSIGNED SMALLINT: диапазон от 0 до 65535. Этого будет достаточно для 16-разрядных целых чисел без знака.
  • UNSIGNED TINYINT: диапазон от 0 до 255. Достаточно для 2-битного беззнакового целого. Похоже, вам нужно сохранить ведущие нули, поэтому используйте также ZEROFILL. Чтобы сохранить значение шириной всего в два символа, вы можете указать UNSIGNED ZEROFILL TINYINT(2).
  • UNSIGNED INT: диапазон от 0 до 4294967295. Достаточно для 32-разрядного целого без знака.
  • UNSIGNED BIGINT: диапазон от 0 до 18446744073709551615. См. Ниже:

Последний из них, 64-битный unsigned int, имеет несколько предостережений со страницы, указанной выше:

  • Вся арифметика выполняется с использованием значений BIGINT или DOUBLE со знаком, поэтому вы не должны использовать большие целые числа без знака больше 9223372036854775807 (63 бита), кроме как с битовыми функциями! Если вы сделаете это, некоторые из последних цифр в результате могут быть неправильными из-за ошибок округления при преобразовании значения BIGINT в DOUBLE.
  • Вы всегда можете сохранить точное целочисленное значение в столбце BIGINT, сохранив его в виде строки. В этом случае MySQL выполняет преобразование строки в число, которое не требует промежуточного представления двойной точности.
  • Операторы -, + и * используют арифметику BIGINT, когда оба операнда являются целочисленными значениями. Это означает, что при умножении двух больших целых чисел (или результатов функций, возвращающих целые числа) вы можете получить неожиданные результаты, если результат больше 9223372036854775807.
1 голос
/ 24 июня 2011

MySQL поддерживает несколько типов данных. См. Типы данных MySQL

UNSIGNED BIGINT   : 8-byte (64-bit) integer

UNSIGNED INT      : 4-byte (32-bit) integer

UNSIGNED SMALLINT : 2-byte (16-bit) integer

Для 2-битного типа вы можете использовать TINYINT (8-bit) или ENUM тип данных .

...