华为上机测试题(协议数据解析-java)

来源:互联网 发布:长短经哪个版本好 知乎 编辑:程序博客网 时间:2024/05/21 03:18

/**

 * 协议数据解析 描述:   

 * 某协议包括字段: 类型Type 一个字节;  命令字Command 一个字节; 端口号Port 2个字节; 

 * 结果Result 2个字节;  传输模式TransMode 2个字节; 上传速度RateUp 4个字节; 

 * 下载速度RateDown 4个字节; 

 * 说明:(1) 协议采用网络序  (2) 协议数据内容为内存16进制值 

 * 如下为一个简单的协议数据: 

 * 18 12 00 0a 00 00 00 01 00 03 0D 40 00 00 00 14  

 *  通过数据我们并不能直观地看出对应的参数值,所以通过程序自动实现协议解析 

 *  运行时间限制: 10 Sec 内存限制: 128 MByte 

 *  输入:   一行字符串,内容为内存16进制值,每个16进制值之间用空格隔开 

 *  输出:   解析协议,每个协议字段一行,按示例顺序输出。 

 *            Type=24  Command=18 Port=10 Result=0  TransMode=1 RateUp=200000 RateDown=20 

 *  样例输入:   18 12 00 0a 00 00 00 01 00 03 0D 40 00 00 00 14 

 *  样例输出:   Type=24  Command=18 Port=10 Result=0  TransMode=1 RateUp=200000 RateDown=20

 *

 */

public class Main {public static void main(String[] args) {//先输入16个两位的十六进制数,每输入一个用空客隔开//将空格替换为空,得到一串十六进制数//用十六进制字符串表示每个字段//将每个字段的十六进制字符串转为十进制数//打印出每个字段Scanner cin = new Scanner(System.in);System.out.println("输入16个两位的十六进制数,每输入一个用空客隔开");String srcStr = cin.nextLine();String str = srcStr.replace(" ", "");int Type = Integer.parseInt(str.substring(0,2),16);int Command = Integer.parseInt(str.substring(2,4),16);int Port = Integer.parseInt(str.substring(4,8),16);int Result = Integer.parseInt(str.substring(8,12),16);int TransMode = Integer.parseInt(str.substring(12,16),16);int RateUp = Integer.parseInt(str.substring(16,24),16);int RateDown = Integer.parseInt(str.substring(24,32),16);        System.out.println("Type="+Type+"\rCommand="+Command+"\rPort="+Port+    "\rResult="+Result+"\rTransMode="+TransMode+"\rRateUp="+RateUp+"\rRateDown="+RateDown);}    }


0 0