我想知道什么是我问题的最佳解决方案。我有一个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,然后是剩菜。
我知道这听起来有点令人困惑,所以我将不胜感激。
答案 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
这适用于每个基数和范围,您只需要调整常数。