222011

public class Test {

public  static  void  encode(byte[]  in,  byte[]  out,  int  password)
{
int  len  =  in.length;

int  seed  =  password  ^  0×3810860;
for  (int  i  =  0  ;  i  <  len;  ++i)  {
/**
*因为JVM中涉及byte、short、char类型的运算操作首先会把这些值转换成int类型,
* 然后对int类型的值进行运算,所以需要把运算结果强制转换成byte类型
*/
byte  a  =  (byte)(  (  in[i]  ^  seed  )  >>>  5  );//把异或后的值存放在a的低3位
byte  b  =  (byte)(  (  (  ((int)in[i])  <<  20 )  ^  seed  )  >>>  (20-3)  );//把异或后的值存放在b的高5位
a  &=  0×7;//0×7:0000 0111;将a中未存储有效数的位清零
b  &=  0xf8;//0xf8:1111 1000;将b中未存储有效数的位清零
out[i]  =  (byte)(a  |  b);
seed  =  ((seed  ^  out[i])  *  7321  +  out[i]);
}
}

public  static  void  decode(byte[]  in,  byte[]  out,  int  password)
{
int  len  =  in.length;

int  seed  =  password  ^  0×3810860;
for  (int  i  =  0  ;  i  <  len;  ++i)  {
//  fill  the  code  here
}
}
public  static  void  main(String  []  args)  throws  Exception
{
int  password  =  0x808d0625;
byte[]  buf1  =  {-36,  -108,  -73,  95,  56,  80,  -103,  -49,  59,  -52,  -30,  70,  -93,  88,  110,  -128,  88,  -42,  1,  114,  -117,  -67,  -84,  55,  24,  -107,  -97,  -51,  60,  -117,  113,  38,  110,  -103,  -70,  100,  54,  -126,  };
byte[]  buf2  =  new  byte[buf1.length];
decode(buf1,  buf2,  password);
System.out.println(new  String(buf2,  “GBK”));
}
}

代码及解析:

典型的考察位运算的题目,不要指望copy,每次答案都不一样。

/*byte共8位,红色部分和蓝色部分与encode保持一致*/
byte a = (byte)(((in[i] & 0×7) << 5) ^ seed);//把值存放到a的高3位
byte b = (byte)(((((((int)in[i]) & 0xf8 ) << (20 – 3))) ^ seed) >>> 20); //把值存放到b的低5位
a &= 0xe0;  //0xe0:1110 0000;将a中未存储有效数的位清零
b &= 0x1f;  //0x1f:0001 1111;将b中未存储有效数的位清零
out[i] = (byte)(a | b);
/*与encode代码保持一致,in和out互换*/
seed  =  ((seed  ^  in[i])  *  7321  +  in[i]);

答案就不贴了,每次都不一样,以实际运行结果为准

相关日志

3 Responses to “Sogou2012校园招聘测评题目(Java版)”

  1. 貌似杀花了,再来个板凳。。。

  2. 提前祝博主:元宵节快乐!!

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam
© 2009 - 2024 冰河的博客