您好我一直在写一本书的代码,但我的代码中有错误,而且由于我不是一个优秀的应用开发者,我无法解决问题。 这是代码
public static MQTTMessage decode(final byte[] message) {
int i = 0;
MQTTMessage mqtt = new MQTTMessage();
mqtt.type = (message[i]>>4 & 0x0F);
mqtt.DUP = ((message[i] >> 3) & 0x01) == 0 ? false : true;
mqtt.QoS = (message[i] >> 1) & 0x03;
mqtt.retain = (message[i] & 0x01) == 0 ? false : true;
i++;
int multiplier = 1;
int length = 0;
byte digit = 0;
do {
digit = message[i++];
length += (digit & 127) * multiplier;
multiplier *= 128;
} while ((digit & 128) != 0);
mqtt.remainingLength = length;
switch (mqtt.type) {
case CONNECT:
int protocol_name_len = (message[i++] << 8 | message[i++]);
mqtt.variableHeader.put("protocol_name", new String(message, i, protocol_name_len));
mqtt.variableHeader.put("protocol_version", message[i++]);
mqtt.variableHeader.put("has_username", ((message[i++] << 7) & 0x01) == 0 ? false : true);
mqtt.variableHeader.put("has_password", ((message[i] << 6) & 0x01) == 0 ? false : true);
mqtt.variableHeader.put("will_retain", ((message[i] << 5) & 0x01) == 0 ? false : true);
mqtt.variableHeader.put("will_qos", ((message[i] << 3) & 0x03));
mqtt.variableHeader.put("will", ((message[i] << 2) & 0x01) == 0 ? false : true);
mqtt.variableHeader.put("clean_session", ((message[i] << 1) & 0x01) == 0 ? false : true);
int keep_alive_len = (message[i++] << 8 | message[i++]);
mqtt.variableHeader.put("keep_alive", new String(message, i, keep_alive_len));
break;
eclips中的错误是关于&#34; put&#34;命令。顺便说一下,这本书说它是一个有效的代码!
我该怎么办?
提前谢谢你