//public static CommonMessage<IMessageBody> unpack(byte[] a) //{ // if (a[0] == 126 && a[a.Length - 1] == 126) // { // bool var2 = Check(a = reverseEscapeData(a)) == a[a.Length - 2]; // if (!var2) // { // throw new Exception("校验位出错"); // } // else // { // T808_MessageHeader var5 = getHeader(a); // CommonMessageBody var4 = var5.getSubpackage() ? var3.getBody(var5, BytesUtil.cutBytes(17, a.length - 19, a)): (var4 = var3.getBody(var5, BytesUtil.cutBytes(13, a.length - 15, a))); // } // } // else // { // throw new Exception("不是7E开头7E结尾"); // } //} public static T808_MessageHeader getHeader(byte[] a) { T808_MessageHeader var1 = new T808_MessageHeader(); byte[] var2 = cutBytes(1, 12, a); //截取出消息头 var msgid = getWord(0, var2); int var3 = parseBytesToInt(msgid); //messageid byte[] var4 = getBigWord(2, var2); int var5 = ToolHelper.Bytes2Int(var4); //getBitsValue(0, 9, var4);// int var6 = getBitsValue(10, 3, var4); bool var12 = getBooleanValue(1, 2, var4); String var7 = bcdToStr(cutBytes(4, 6, var2)); int var11 = parseBytesToInt(getWord(10, var2)); int var8 = 0; int var9 = 0; if (var12) { byte[] var10 = getWord(13, a); byte[] var10000 = getWord(15, a); var8 = parseBytesToInt(var10); var9 = parseBytesToInt(var10000); } var1.setBodyLength(var5); var1.setEncrypt(var6); var1.setMessageID(var3); var1.setPackageCounts(var8); var1.setPackageNum(var9); var1.setRunningNum(var11); var1.setSimNum(var7); var1.setSubpackage(var12); return(var1); }
public static byte[] reverseEscapeData(byte[] data) { byte[] result; try { int i = 0; Stream stream = new MemoryStream(); while (true) { if (i >= data.Length - 1) { if (data[data.Length - 2] != 125) { if (data[data.Length - 1] == 125) { throw new Exception("错误的协议无法转义!"); } stream.WriteByte(data[data.Length - 1]); } result = ToolHelper.StreamToBytes(stream); break; } if (data[i] == 125 && data[i + 1] == 2) { ++i; stream.WriteByte(126); } else if (data[i] == 125 && data[i + 1] == 1) { ++i; stream.WriteByte(125); } else { if (data[i] == 125 && data[i + 1] != 2 || data[i] == 125 && data[i + 1] != 1) { throw new Exception("错误的协议无法转义!"); } stream.WriteByte(data[i]); } ++i; } } catch { throw; } return(result); }
public static byte[] getHeaderBytes <T>(CommonMessage <T> a) where T : IMessageBody { byte[] var1 = getInitNoPackHeadr(); byte[] var2 = ToolHelper.Int2Bytes2((int)a.getMessageID()); var1[0] = var2[0]; var1[1] = var2[1]; T808_MessageHeader head = (T808_MessageHeader)a.getMessageHeader(); if (head.getSimNum() != null && !head.getSimNum().Equals("")) { if (head.getSimNum().Length > 12) { head.setSimNum(head.getSimNum().Substring(0, 12)); } else { if (head.getSimNum().Length < 12) { head.setSimNum(formatString(head.getSimNum())); } } } else { head.setSimNum("000000000000"); } var2 = strToBcd(head.getSimNum()); byte[] var10001 = var1; byte[] var4 = var1; byte[] var10002 = var1; var1[4] = var2[0]; var1[5] = var2[1]; var1[6] = var2[2]; var1[7] = var2[3]; var1[8] = var2[4]; var1[9] = var2[5]; var1 = ToolHelper.Int2Bytes2(getRunningNum()); var10002[10] = var1[0]; var10001[11] = var1[1]; return(var4); }
public static byte[] escapeData(byte[] data) { Stream stream = new MemoryStream(); byte[] result; try { int i = 0; while (true) { if (i >= data.Length) { result = ToolHelper.StreamToBytes(stream); break; } if (data[i] == 126) { stream.WriteByte(125); stream.WriteByte(2); } else if (data[i] == 125) { stream.WriteByte(125); stream.WriteByte(1); } else { stream.WriteByte(data[i]); } ++i; } } catch { throw; } return(result); }