Android “我能用它做什么?”;把「;在这个代码中?
嗨,我一直在写一本书中的代码,但代码中有错误,因为我不是一个好的应用程序开发人员,所以我无法解决这个问题。 这是密码Android “我能用它做什么?”;把「;在这个代码中?,android,arduino,Android,Arduino,嗨,我一直在写一本书中的代码,但代码中有错误,因为我不是一个好的应用程序开发人员,所以我无法解决这个问题。 这是密码 public static MQTTMessage decode(final byte[] message) { int i = 0; MQTTMessage mqtt = new MQTTMessage(); mqtt.type = (message[i]>>4 & 0x0F); mqtt.DUP = ((messag
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;
公共静态MQTTMessage解码(最终字节[]消息){
int i=0;
MQTTMessage mqtt=新的MQTTMessage();
mqtt.type=(消息[i]>>4&0x0F);
mqtt.DUP=((消息[i]>>3)和0x01)==0?false:true;
mqtt.QoS=(消息[i]>>1)&0x03;
mqtt.retain=(消息[i]&0x01)==0?false:true;
i++;
整数乘数=1;
整数长度=0;
字节数字=0;
做{
数字=消息[i++];
长度+=(数字和127)*乘数;
乘数*=128;
}而((数字&128)!=0);
mqtt.remainingLength=长度;
开关(mqtt.type){
案例连接:
int protocol_name_len=(消息[i++]您得到了什么错误?向我们显示堆栈跟踪。“类型映射中的方法put(String,String)不适用于参数(String,byte)”,您已经知道了。当您应该在put调用中传入字符串时,您正在传入字节。有关如何将字节数组转换为字符串,请参阅。