Wed, 06 Oct 2004 06:57:11 -0400
On Wed, 2004-10-06 at 03:59, Polton, Richard (IT) wrote:
> If the char which is to be converted is 0661, say, then what will be the
> value of the subtraction? Will it be 0661 - 0660 or will it be 0661 -
> 0030? I assume that a literal '0' will always map to 0030 rather than
> cleverly detect the range of digits that the char belongs to.
Oh. Good point. (Why didn't I think of that?) The literal '0' is
mapped to 0030, so you'd get U+0661 - U+0030, which is *way* too big.
So I guess the code is broken. The question is, in what way? :-/
Now the question is: what does Microsoft's implementation do? :-)
Someone will have to throw U+0661 at Microsoft's
Microsoft.VisualBasic.dll and see what the return value (or exception
generated) is. They may require a value between '0' and '9', and all
other "Nd" digits, such as U+0661, generate exceptions.
Alternatively, Microsoft always subtracts from the proper value.
We can do either of these, we just need to know which to do.