TINYINT数据类型,用于在mysql中存储带符号的数字

时间:2014-05-12 04:56:07

标签: c++ mysql tinyint

我在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}}

我有点困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

不明白为什么在我的RSSI列中有一个例如-90的值,它被声明为TINYINT(4),只能存储1个字节的值

二进制......

  

显示为3个字节的数据?

十进制。

&#34; -90&#34;是十进制的三个字节,-90是二进制的一个字节。