日期:2014-05-19  浏览次数:20877 次

Java改写为C#的问题,请高手帮忙
function     xor(origin,     key   )   {
                var   result   =   " ";
                key   =   parseInt(   key   );
                for(   var   i=0;   i <origin.length   ;   i++){
                      var   x   =     parseInt(     String(   origin.charCodeAt(i))   );
                      result   +=     byteToHexString(     x   ^   key)   ;
                }
                return   result;
        }

调用举例:
xor(MD5( "password "),100);

因为MD5生成的串中有abcdef等16进制字符,下面这句
parseInt(     String(   origin.charCodeAt(i))   );
应该有可能会返回NaN吧?那么最后得到的x是个什么呢?这把我弄糊涂了。

关键是我对java不熟悉,所以不知道这么NaN参与运算会有什么结果,汗~~~

那我貌似应该在C#中捕获异常,然后给x赋值吧。又该是什么值呢?零?

请各位高人不吝指点,鄙人翘首以待。


------解决方案--------------------
对jave不熟,帮你顶一下
------解决方案--------------------
对JAVA也不熟悉,可以到JAVA区问问
------解决方案--------------------
你这是javascript,好像parseInt( String( origin.charCodeAt(i)) );得指明16进制
------解决方案--------------------
明明是javascript和java完全没什么关系
------解决方案--------------------
上面的代码不是JAVA吧,java里面还有var这样声明变量的。。。
------解决方案--------------------
NaN参与运算应该得到的还是NaN
------解决方案--------------------
charCodeAt返回的是相应字符所在位置的ascii码
比如var str = new String( "hello world ");
alert(str.charCodeAt(1));
打印的是e 的ascii码 101
然后进行转换为int 成为数字的101
------解决方案--------------------
回答不了~~
帮忙顶下吧
------解决方案--------------------
parseInt 方法返回与保存在 numString 中的数字值相等的整数。如果 numString 的前缀不能解释为整数,则返回 NaN(而不是数字)。

parseInt( "abc ") // 返回 NaN。
parseInt( "12abc ") // 返回 12。可以用 isNaN 方法检测 NaN。
------解决方案--------------------
parseInt( String( origin.charCodeAt(i)) );
上面有朋友已经解释清楚了,不会得到NaN的,把一个字符的ASCII码值转换成字符串,再转换成整数,然后再异或运算。你在改写成C#时也要按照这个逻辑写。不用捕捉异常,更不能捕捉异常后自己给x赋0再运算,那样就不能还原成原来的字符串了
------解决方案--------------------
友情帮顶

--------------------------------------------
专注于自动提交,如发贴机资源采集器等网络营销软件的开发及相关领域如验证码识别技术。
QQ群号:24733057