解释MySQL数据库整数值

时间:2017-05-18 14:23:35

标签: c# mysql datagridview binary bit

我想知道什么是我问题的最佳解决方案。我有一个MySQL数据库,我正在我的DataGridView中读取。我的一个列记录了整数值。但是,当前值并不完全正确。

例如,假设我的这一列有一个值为128的行实例。作为二进制表示,128是10000000.但是,这不是我想要的。我想要做的是将此值拆分为特定部分并检查特定部分是否为0,如果不是,则记录该值,而不是128。

所以,如果我有128并且我想将10000000的二进制字符串拆分成以下部分 10 000 000 从字符串的结尾开始,一直到前面,我将检查值。所以第一个子集是0,所以没有什么值得注意的,下一个也是0.但是,第三个部分是独立的01,二进制是2。这就是我想要在我的DataGridView上显示的内容,而不是现有的128。

另一个问题是,并非所有的值都很容易像128.其中一些可能像41160那样是1010000011001000.分裂将类似于 1 0001 00011 001 000

作为参考,从结尾开始,分割对于32位是这样的: 3,3,5,4,4,然后是剩菜。

我知道这听起来有点令人困惑,所以我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用整数除法和模数运算符从数字中提取数字范围。

一般表格为(number / (radix^digits_to_cut)) % (radix^digits_to_show)

MySQL示例(您可以在c#中执行相同的操作):

select 
t.col,
t.col % 0b1000 as a,
t.col div 0b1000 % 0b1000  as b,
t.col div 0b1000000 % 0b100000 as c,
t.col div 0b100000000000 % 0b10000 as d,
t.col div 0b1000000000000000 % 0b10000 as е
from (select 0b1010000011001000+0 as col) as t

这适用于每个基数和范围,您只需要调整常数。