`

搜狗的一个笔试题

 
阅读更多

以下程序是一个信息编码的程序,阅读其encode部分,并补全其decode部分
最后运行程序,会打印出的一句话。这句话就是我们要求的答案。

注意!这句话是用GBK编码的!
题目code如下:

package com.db;

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

		int seed = password ^ 0x6466913d;
		for (int i = 0; i < len; ++i) {
			byte a = (byte) ((in[i] ^ seed) >>> 3);
			byte b = (byte) (((((int) in[i]) << 13) ^ seed) >>> (13 - 5));
			a &= 0x1f;
			b &= 0xe0;
			out[i] = (byte) (a | b);
			seed = (((seed << 7) ^ seed ^ in[i]) + 144123481);
		}
	}

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

		int seed = password ^ 0x6466913d;
		for (int i = 0; i < len; ++i) {
			// fill the code here
			
                                 }
	}

	public static void main(String[] args) throws Exception {
		int password = 0xe9479a3c;
		byte[] buf1 = { 121, -82, 126, -49, 48, -10, -41, -37, -97, 31, -128,
				113, -107, 88, -124, -37, -2, -68, 94, 38, 89, -39, -66, 39,
				88, -66, -2, -31, -37, 83, -124, 104, -101, -128, 3, -118, -80,
				-125, 25, -31, -91, 55, 104, 102, -8, -108, -69, -126, 73, -48, };
		byte[] buf2 = new byte[buf1.length];
		decode(buf1, buf2, password);
		System.out.println(new String(buf2, "GBK"));
	}

}

 

 

 

 答案如下:

package com.db;

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

		int seed = password ^ 0x6466913d;
		for (int i = 0; i < len; ++i) {
			byte a = (byte) ((in[i] ^ seed) >>> 3);
			byte b = (byte) (((((int) in[i]) << 13) ^ seed) >>> (13 - 5));
			a &= 0x1f;
			b &= 0xe0;
			out[i] = (byte) (a | b);
			seed = (((seed << 7) ^ seed ^ in[i]) + 144123481);
		}
	}

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

		int seed = password ^ 0x6466913d;
		for (int i = 0; i < len; ++i) {
			// fill the code here
			byte a = (byte) (in[i] & 0x1f); // a低五位,实际上是高五位
			byte b = (byte) ((in[i] & 0xe0));// b高三位,实际上是低三位
			b = (byte) (((((int) b) << 8) ^ seed) >>> 13);
			b = (byte) (b & 0x7);
			a = (byte) (((a << 3) ^ seed) & 0xf8);
			out[i] = (byte) (a | b);
			seed = (((seed << 7) ^ seed ^ out[i]) + 144123481);

		}
	}

	public static void main(String[] args) throws Exception {
		int password = 0xe9479a3c;
		byte[] buf1 = { 121, -82, 126, -49, 48, -10, -41, -37, -97, 31, -128,
				113, -107, 88, -124, -37, -2, -68, 94, 38, 89, -39, -66, 39,
				88, -66, -2, -31, -37, 83, -124, 104, -101, -128, 3, -118, -80,
				-125, 25, -31, -91, 55, 104, 102, -8, -108, -69, -126, 73, -48, };
		byte[] buf2 = new byte[buf1.length];
		decode(buf1, buf2, password);
		System.out.println(new String(buf2, "GBK"));
	}

}

 

0
0
分享到:
评论
1 楼 韩悠悠 2011-12-15  
[list]
[*]
引用
[u][/u][i][/i][b][/b]
引用
  • [*]
[img][/img][url][/url][flash=200,200][/flash][*][*]
引用
[/list]

相关推荐

    搜狗2010招聘笔试题

    【搜狗2010招聘笔试题】是搜狗公司在2010年面向应聘者出的一套笔试题目,主要针对测试职位。这些题目旨在考察应聘者的编程基础、逻辑思维和问题解决能力。以下是其中一些关键知识点的详细解释: 1. **调用方式:...

    搜狗公司java笔试题

    【搜狗公司Java笔试题解析】 1. **二进制到十六进制转换**:二进制数101.00101转换成16进制,首先需要了解二进制与十六进制之间的关系。二进制每四位对应一个十六进制位,不足四位的高位补零。101.00101对应的十六...

    搜狗软件测试开发工程师笔试题.pdf

    接下来,我将详细解析这份搜狗软件测试开发工程师笔试题中包含的知识点。 首先,软件测试的目的是尽可能多地发现软件中的缺陷,因此第一题的答案是正确的(Y)。Beta测试实际上是一种用户验收测试(UAT),它是软件...

    搜狗2012年笔试题

    搜狗2012年笔试题,绝对真实,主要是针对开发职位,题目比较活,欢迎下载

    搜狗2016 C++笔试题

    【搜狗2016 C++笔试题】的解析与知识点详解 1. 关于重载和多态的正确理解: - 重载是指在同一个作用域内,可以有多个同名但参数列表不同的函数。这并不局限于子类继承父类的情况,而是可以在任何地方定义具有不同...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题库 高吞吐低延迟Java应用的垃圾回收优化.docx 黑马...

    最新出炉2015届中国顶级IT互联网公司校招笔试题

    搜狗校园招聘研发类笔试题.pdf 百度前端研发笔试卷.pdf 百度大数据云计算研发笔试卷.pdf 百度安全研发笔试卷.pdf 百度研发工程师深圳.pdf 美团校园招聘研发笔试题.pdf 腾讯校园招聘技术类研发笔试题.pdf 阿里巴巴...

    搜狗2014校园招聘笔试题

    随着技术的发展,人工智能和大数据处理也可能成为搜狗笔试题的新兴领域,包括机器学习的基本算法、数据挖掘、推荐系统等。 在准备这样的笔试时,考生应全面复习上述各个领域的知识,多做练习题,提高解题速度和准确...

    搜狗校招产品岗笔试题_互联网 产品经理求职 校招 面试笔试题.docx

    搜狗校招产品岗笔试题_互联网 产品经理求职 校招 面试笔试题.docx

    2015校园招聘笔试题大合集

    2015校园招聘笔试题大合集,汇集百度、腾讯、阿里等多家大型互联网企业的面试题,非常... 搜狗2015校园招聘研发类笔试题.pdf 腾讯2015校园招聘技术类研发笔试题.pdf 浙江大华2015届校园招聘算法、软件类笔试题.pdf

    搜狗2017 C++笔试题.pdf

    搜狗2017年的C++笔试题涉及到重载和多态的概念、博弈论策略、构造函数和析构函数的调用顺序、`fork()`函数的使用以及内存区域的分配。对于C++程序员来说,这些知识点是基础且重要的,理解和掌握它们对于编写高效、...

    BAT京东百度人搜阿里巴巴腾讯华为小米搜狗等各大互联网公司校招面试笔试题面(2015年).rar

    回忆版.pdf百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题.pdf百度校园招聘笔试面试题合集百度校园招聘笔试题web前端2013.pdf百度校园招聘笔试题产品2.pdf百度校园招聘笔试题产品经理2014.pdf百度校园招聘笔试...

    搜狗2013年校园招聘笔试题

    搜狗2013年校园招聘笔试题C,希望对大家有帮助。

    互联网行业面试笔试真题资料BAT谷歌微软等笔试面试真题复习资料合集200MB.zip

    搜狗2015校园招聘研发类笔试题.pdf 百度2015前端研发笔试卷.pdf 百度2015大数据云计算研发笔试卷.pdf 百度2015安全研发笔试卷.pdf 美团2015校园招聘研发笔试题.pdf C++基础面试题.docx C++开发工程师面试题库.docx ...

    搜狗2017C++笔试题.docx

    在C++中,当创建一个对象并用另一个已存在对象初始化时,会调用拷贝构造函数。在题目中,`b2=func(b1)`,首先调用拷贝构造函数将`b1`传入`func`,然后在`func`中返回`rhs`,此时会调用析构函数,因为函数局部变量`...

    题库搜狗笔试面试题合集

    题库搜狗笔试面试题合集提取方式是百度网盘分享地址

    几个搜狗招聘笔试题,对找工作有帮助。

    多路归并排序是最常用的方法,它将大文件分成若干个小文件,分别在内存中进行排序,然后将这些已排序的小文件合并成一个大文件,实现整体的排序。 Q9: 在对空间和时间都有限制的实时系统中,常使用的排序算法? ...

Global site tag (gtag.js) - Google Analytics