📄 msghead.java~191~
字号:
package SPAPI;/** * Title: SPAPI * Description: * Copyright: Copyright (c) 2002 * Company: openet * @author taixf * @version 1.0 */abstract class MsgHead{ private int TotalLen; // 消息的总长度(字节) private int CmdID; // 命令ID private int[] SeqNum; // 序列号 public MsgHead(){ TotalLen = 20; SeqNum = new int[3]; } protected void MsgHead(byte[] ba){ TotalLen = getUINT4(ba, 0); CmdID = getUINT4(ba, 4); SeqNum[0] = getUINT4(ba, 8); SeqNum[1] = getUINT4(ba, 12); SeqNum[2] = getUINT4(ba, 16); } static public int getCmdID(byte[] ba) { if (ba.length <= 7) return 0; return getUINT4(ba, 4); } static protected int getUINT4(byte[] ba, int start) { if (ba.length <= start + 3) return 0; int r = 0; r |= 0x00FF & ba[start]; r = r<<8; r |= 0x00FF & ba[start + 1]; r = r<<8; r |= 0x00FF & ba[start + 2]; r = r<<8; r |= 0x00FF & ba[start + 3]; return r; }/* protected void htonl(byte[] ba, int start, long value) { if (ba.length <= start + 3) return; ba[start ] = (byte)(value / 0x1000000); ba[start + 1] = (byte)(value / 0x10000 % 0x100); ba[start + 2] = (byte)(value / 0x100 % 0x100); ba[start + 3] = (byte)(value % 0x100); }//*/ static protected void setUINT4(byte[] ba, int start, int value) { if (ba.length <= start + 3) return; ba[start ] = (byte)(value >> 24 & 0xFF); ba[start + 1] = (byte)(value >> 16 & 0xFF); ba[start + 2] = (byte)(value >> 8 & 0xFF); ba[start + 3] = (byte)(value & 0xFF); } static protected String byte2str(byte[] ba, int start, int len) { if (ba.length <= start + len - 1) return null; String r = new String(); for (int i = 0; i < len; i++) { if (ba[start + i] == '\0') break; r += (char)ba[start + i]; } return r; } static protected void str2byte(byte[] ba, String s, int start, int len) { if (ba.length <= start + len - 1) return; if (s.length() < len) { for(int i = 0; i < s.length(); i++) { ba[start + i] = (byte)s.charAt(i); } for(int i = s.length(); i < len; i++) { ba[start + i] = 0; } } else { for(int i = 0; i < len; i++) { ba[start + i] = (byte)s.charAt(i); } } } protected void setHead(byte[] ba){ TotalLen = getUINT4(ba, 0); CmdID = getUINT4(ba, 4); SeqNum[0] = getUINT4(ba, 8); SeqNum[1] = getUINT4(ba, 12); SeqNum[2] = getUINT4(ba, 16); } protected int headFill(byte[] ba) { setUINT4(ba, 0, TotalLen); setUINT4(ba, 4, CmdID); setUINT4(ba, 8, SeqNum[0]); setUINT4(ba,12, SeqNum[1]); setUINT4(ba,16, SeqNum[2]); return 0; } public byte[] getBytes() { byte[] ba = new byte[20]; headFill(ba); return ba; } public void printHead() { System.out.print("TotalLen=" + TotalLen); System.out.print(" CmdID=" + Integer.toHexString(CmdID)); System.out.print(" SeqNum[0..2]=" + SeqNum[0]); System.out.print(", " + SeqNum[1]); System.out.print(", " + SeqNum[2]); } public int[] getSeqNum() { return SeqNum; } public void setSeqNum(int[] SeqNum) { this.SeqNum = SeqNum; } public int getTotalLen() { return TotalLen; } public void setTotalLen(int TotalLen) { this.TotalLen = TotalLen; } public int getCmdID() { return CmdID; } public void setCmdID(int CmdID) { this.CmdID = CmdID; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -