您的位置:首页 > 编程语言 > Java开发

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

2015-08-31 15:27 567 查看
/**
* 协议数据解析 描述:
* 某协议包括字段: 类型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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: