У меня есть таблица MACRecord в MYSQL. У меня есть 3 поля, объявленные как TINYINT(4)
(RSSI1, RSSI2, RSSI3
) со значением по умолчанию 0
, Я использую его для хранения подписанных отрицательных значений я-е -90, -84
и т.д. Я пытаюсь понять, сколько длины занимает каждое число в столбце. у меня есть c++
код для вывода длины каждого столбца в байтах следующим образом:
lengths = mysql_fetch_lengths(result);
num_rows = mysql_num_rows(result);
for(i = 3; i < num_fields; i++)
{
if (strstr(fields[i].name, "RSSI") != NULL)
{
printf("Column %u is %lu bytes in length.\n",
i, lengths[i]);
}
Так что теперь, например, если столбцы 3, 4 и 5, которые являются столбцами моего RSSI, содержат значения, такие как -90, 0 (по умолчанию), -83, я получаю вывод следующим образом:
Длина столбца 3 составляет 3 байта.
Длина столбца 4 составляет 1 байт.
Длина столбца 5 составляет 3 байта.
Я не понимаю, почему имея значение, например, -90
в моем RSSI
столбцы, которые были объявлены как TINYINT(4)
который может хранить только 1 byte
Значения отображаются как имеющие 3 bytes
данных? Значение по умолчанию 0
имеет смысл. Если я опишу свою таблицу, я вижу, что тип данных TINYINT
но все же это говорит о ценностях 3 bytes
в длину.
| Field | Type | Null | Key | Default | Extra |
| RSSI1 | tinyint(4) | YES | | 0 | |
| RSSI2 | tinyint(4) | YES | | 0 | |
| RSSI3 | tinyint(4) | YES | | 0 | |
Я немного смущен. Любая помощь будет оценена.
не понимаю, почему, например, значение -90 в столбцах моего RSSI, которые были объявлены как TINYINT (4), может хранить только 1-байтовые значения
в двоичном формате …
отображается как имеющий 3 байта данных?
в десятичном.
«-90» — это три байта в десятичном формате, а -90 — один байт двоичного числа.