我在MYSQL中有一个表MACRecord。我有3个字段声明为TINYINT(4)
(RSSI1, RSSI2, RSSI3
),默认值为0
。我用它来存储带符号的负值i-e -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]);
}
现在例如,如果作为我的RSSI列的列3,4和5包含诸如-90,0(默认值),-83之类的值,则得到如下输出:
第3列的长度为3个字节
第4列的长度为1个字节。
第5列的长度为3个字节
我不明白为什么在-90
列的RSSI
列中有TINYINT(4)
的值,这些列被声明为1 byte
,只能存储3 bytes
1}}值显示为有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 | |
的值。
{{1}}
我有点困惑。任何帮助将不胜感激。
答案 0 :(得分:1)
不明白为什么在我的RSSI列中有一个例如-90的值,它被声明为TINYINT(4),只能存储1个字节的值
二进制......
显示为3个字节的数据?
十进制。
&#34; -90&#34;是十进制的三个字节,-90是二进制的一个字节。