$coded .= substr($str, $i, $keylength) ^ $key* @key string 
* @coded string一段简单的代码,就是很不明白这个异或的时候是对两个字符串做计算,看PHP文档说是把字符串转换成ASCII码后进行的计算。但是我进行对字符串转换为ASCII的处理,
  /// <summary>
        /// 获取ASC码 
        /// </summary>
        /// <param name="Data"></param>
        /// <returns></returns>
        private static int ASC(String Data)
        {
            byte[] b = System.Text.Encoding.Default.GetBytes(Data);
            string p = "";
            for (int i = 0; i < b.Length; i++)
            {
                p += (int)b[i];
            }            return int.Parse(p);
        }但是,这个方法根本就不行,很少的字符串都会返回一个超出int值范围的数字(很大很大)
我想知道PHP里面的字符串转换成ASCII是怎么一个过程? 和结果。

解决方案 »

  1.   

    $coded .= substr($str, $i, $keylength) ^ $key
    对字符做异或操作,一般用于加密
    ord 取得字符内码 ord('a') ==> 97
    chr 转换数值为字符内码 chr(97) ==> a$coded .= substr($str, $i, $keylength) ^ $key
    内部动作为:
    $coded .= chr( ord( substr($str, $i, $keylength) ) ^ $key )
      

  2.   


    问个问题,这个
    ord( ‘abcd’ )的结果是 979899100 这样的一个int值吗?
      

  3.   

    假设 "abc" ^ "s"   则相当于 chr(ord("a") ^ ord("s")),bc忽略不计假设 "abc" ^ "sos" 则相当于 chr(ord("a") ^ ord("s")) . chr(ord("b") ^ ord("o")) . chr(ord("c") ^ ord("s"))明白了吗?