docs: public int chn2Num(String str,Loc loc){
  		int tempNum;
  		int num=0,init=loc.v,init2=loc.v;
  		int flag=63;//"111111"亿万千百十
  		int len=str.length();
  		int chr;
  		while(init<len){
  			//十的情况比较特殊，故单独判断。如十三  不必如二十三一般有前置数字；
  			if((flag&2)>0 && str.charAt(init)=='十'){//flag>0即允许出现十的状态
  				flag&=63-14;//出现十之后下个单位不可能是千百十
  				tempNum=10;
  				init++;
  			}
  			else{			
  				//不接受数字则结束
  				if((flag&1)==0){
  					loc.v=init;
  					break;
  				}
  				flag-=1;//置末位0
  				//判断数字
  				tempNum=chn2Num(str.charAt(init));
  				if(tempNum<0){
  					loc.v=init;
  					break;//不能识别，结束
  				}
  				init++;
  				if(tempNum==0){
  					flag|=1;
  					continue;
  				}
  				//判断单位字符是否存在
  				if(init>=len){
  					loc.v=init;
  					num+=tempNum;
  					break;
  				}
  				chr=str.charAt(init);
  				//判断十
  				if((flag&2)>0 && chr=='十'){
  					flag&=63-14;//出现十之后下个单位不可能是千百十
  					flag|=1;//可以接受个位
  					tempNum*=10;
  					init++;
  				}
  				//判断百
  				else if((flag&4)>0 && chr=='百'){
  					flag&=63-12;//出现百之后下个单位不可能是千百
  					flag|=1;//可以接受个位
  					tempNum*=100;
  					init++;
  				}
  				//判断千
  				else if((flag&8)>0 && chr=='千'){
  					flag&=63-8;//出现百之后下个单位不可能是千
  					flag|=1;//可以接受个位
  					tempNum*=1000;
  					init++;
  				}
  			}
  
  			num+=tempNum;
  			//判断单位字符是否存在 并识别万
  			if(init<len){
  				chr=str.charAt(init);
  				if((flag&16)>0 && chr=='万'){
  					flag=15;//万之后不再出现万，也不会有亿
  					num*=10000;
  					init++;
  					loc.v=init;
  					int numNext=this.chn2Num(str, loc);
  					if(numNext>0)
  						num+=numNext;
  					break;
  				}
  				else if((flag&32)>0 && chr=='亿'){
  					flag=31;//亿之后不再出现亿
  					num*=100000000;
  					init++;
  					loc.v=init;
  					int numNext=this.chn2Num(str, loc);
  					if(numNext>0)
  						num+=numNext;
  					break;
  				}
  			}
  			continue;
  		}
  		if(init2!=init)
  			return num;
  		
  		else 
  			return -1;
  	}