给定一个包含一系列0和1的变量,我如何计算变量中每个变量的数量?
以下是一个例子:
SET @AnswerGridCorrect = '0010010';
我需要做的是将注释返回到一个名为@Hint的变量中,以便它包含:
"Select 2 out of 7 choices"
答案 0 :(得分:2)
使用此:
DECLARE @AnswerGridCorrect VARCHAR(MAX)
DECLARE @Question VARCHAR(MAX)
SET @AnswerGridCorrect = '0010010';
SET @question = 'Select ' + CAST(LEN(@AnswerGridCorrect) - LEN(REPLACE(@AnswerGridCorrect, '1', '')) AS VARCHAR(MAX)) +
' out of ' + CAST(LEN(@AnswerGridCorrect) AS VARCHAR(MAX)) + ' choices'
SELECT @Question
<强>输出:
Select 2 out of 7 choices
答案 1 :(得分:1)
您需要遍历每个位置并测试它是0还是1.例如:
while i <= 7 begin
if substr(@AnswerGridCorrect,i,1) == 1
set count = count + 1
set i = i + 1
end
注意以上是一个不完整的例子,但它应该给你一个想法。
答案 2 :(得分:0)
由于你只有0和1,这是相当容易的:
最好的解决方案是使用逐位AND(某些东西)
public bool CheckBit(byte b, int bitNumber)
{
var bit = (b & (1 << bitNumber - 1)) != 0;
return bit;
}
如果你在这里逐个传递所有的0和1(作为bitNumber),你可以计算返回true的数量(如果两者都是1)和返回false的数量(如果传递的数字是0)甚至找出哪一个设置为0,哪一个设置为1.
希望这会有所帮助:)