private Function ( |
||
binarystr | ||
return |
public ScalarValue Function(StringValue binarystr)
{
var sum = 0;
var binary = new Stack<Boolean>();
var weight = 1;
for (var i = 1; i <= binarystr.Length; i++)
{
var chr = binarystr[i];
if (!ParseEngine.IsWhiteSpace(chr) && !ParseEngine.IsNewLine(chr))
{
if (chr == '0')
{
binary.Push(false);
}
else if (chr == '1')
{
binary.Push(true);
}
else
{
throw new YAMPRuntimeException("bin2dec can only interpret binary strings.");
}
}
}
while (binary.Count != 0)
{
var el = binary.Pop();
if (el)
{
sum += weight;
}
weight *= 2;
}
return new ScalarValue(sum);
}