某公司接到一个关于共享充电柜的项目,客户提供了充电柜和充电宝,以及对应的通信协议。 通信协议主要包括 登录请求、还回充电宝、查询机柜中充电宝的库存数量、借出充电宝等。 其中,登录请求指充电柜向服务器发送登录请求,其协议格式如下: 1位协议头部 + 1位充电柜ID的长度 + 充电柜ID 例如,充电柜发送给服务器的登录请求如下: 16进制的整型数组 {0x64,0x0E,0x4D,0x43,0x31,0x30,0x31,0x38,0x31,0x32,0x30,0x30,0x33,0x39,0x35,0x31} 首先,判断是否为登录请求;判断标准:第1位16进制值若为0x64(0x64表示字母'd'所对应的16进制ASCII码值),则为登录请求。 其次,对于登录请求,服务器需要解析第2位16进制的值,即解析出充电柜ID的长度;上述例子中第2位16进制值为0x0E,对应的10进制值为14,即表示充电柜的ID长度有14位。 最后,服务器根据ID长度可以解析出充电柜ID信息,然后更新该充电柜的状态;即服务器需要将登录请求中的第3位到第16位的16进制数转为字符串,从而解析出对应的ID:“MC101812003951”。 请编写一个Java application,解析服务器所接收到的登录请求,即要求判断请求是否为登录请求,若为登录请求,则输出发送登录请求的充电柜ID。