当前位置: 首页>>代码示例>>C#>>正文


C# ByteBuffer.GetChar方法代码示例

本文整理汇总了C#中System.ByteBuffer.GetChar方法的典型用法代码示例。如果您正苦于以下问题:C# ByteBuffer.GetChar方法的具体用法?C# ByteBuffer.GetChar怎么用?C# ByteBuffer.GetChar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.ByteBuffer的用法示例。


在下文中一共展示了ByteBuffer.GetChar方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ParseBody

        protected override void ParseBody(ByteBuffer buf)
        {
            #if DEBUG
            Client.LogManager.Log(ToString() + " Decoded Data:" + Utils.Util.ToHex(buf.ToByteArray()));
            #endif

            buf.GetChar();//length or sth..
            ReplyCode = buf.Get();
            int len = 0;
            switch (ReplyCode)
            {
                case 0x00://success!
                    Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " Login Success!");
                    len = buf.GetChar();//0x0020
                    Client.QQUser.QQKey.LoginInfo_Token = buf.GetByteArray(len);
                    Client.QQUser.QQKey.LoginInfo_UnknowData = buf.GetByteArray(4); //buf.GetInt()
                    Client.ServerTime = buf.GetByteArray(4);

                    len = buf.GetChar();
                    Client.QQUser.QQKey.LoginInfo_Data_Token = buf.GetByteArray(len);
                    len = buf.GetChar();
                    Client.QQUser.QQKey.LoginInfo_Magic_Token = buf.GetByteArray(len);
                    Client.QQUser.QQKey.LoginInfo_Key1 = buf.GetByteArray(16);
                    buf.GetChar();//0x00 00
                    if (buf.Position + 3 < buf.Length)//判断来的包是否包含LoginInfo_Key3 因为有的版本没这个key 应该说本人用的正式版本没这个
                    {
                        Client.QQUser.QQKey.LoginInfo_Key3 = buf.GetByteArray(16);
            #if DEBUG
                        Client.LogManager.Log(ToString() + "Client.QQUser.QQKey.LoginInfo_Key3:" + Utils.Util.ToHex(Client.QQUser.QQKey.LoginInfo_Key3));
            #endif
                    }
                    buf.GetChar();//0x00 00
                    return;
                case 0x33:
                case 0x51://denied!
                    Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " Denied!");
                    break;
                case 0xBF:
                    Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " No this QQ number!");
                    break;
                case 0x34:
                    Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " Wrong password!");
                    break;
                default:
                    Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " Unknow ReplyCode!");
                    break;

            }
            buf.Position = 11;
            len =(int) buf.GetChar();
            byte[] data = buf.GetByteArray(len);
            ReplyMessage = Utils.Util.GetString(data);

            Client.LogManager.Log(ToString() + ":0x" + ReplyCode.ToString("X2") + " Message Data(UTF-8): "+Utils.Util.ToHex(data)+"-->" + ReplyMessage);
        }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:55,代码来源:LoginVerifyReplyPacket.cs

示例2: ParseBody

 protected override void ParseBody(ByteBuffer buf)
 {
     #if DEBUG
     Client.LogManager.Log(ToString() + " Decoded Data:" + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
     buf.GetChar();//01 66 length or sth...
     buf.GetChar();//01 00
     Client.QQUser.QQKey.LoginInfo_Key2 = buf.GetByteArray(16);
     buf.Position += 8;//00 00 00 01 00 00 00 64
     Client.QQUser.QQKey.LoginInfo_UnknowData2 = buf.GetByteArray(4);
     Client.ServerTime = buf.GetByteArray(4);
     Client.ClientIP = buf.GetByteArray(4);
     buf.GetInt();//00000000
     int len = (int)buf.GetChar();
     Client.QQUser.QQKey.LoginInfo_Large_Token = buf.GetByteArray(len);
     buf.GetInt();//????
     len = (int)buf.Get();
     NickName = Utils.Util.GetString(buf.GetByteArray(len));
     Client.LogManager.Log(ToString() + ": Hello," + NickName);
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:20,代码来源:LoginGetInfoReplyPacket.cs

示例3: ParseBody

 protected override void ParseBody(ByteBuffer buf)
 {
     #if DEBUG
     Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
     buf.Get();//00
     Onlines = buf.GetInt();
     IP = Utils.Util.GetIpStringFromBytes(buf.GetByteArray(4));//client ip
     Port = (int)buf.GetChar();
     buf.GetChar();//unknown 00 3c
     ServerTime = Utils.Util.GetDateTimeFromMillis(buf.GetInt() * 1000L);
     Client.LogManager.Log(ToString() + " Onlines:" +Onlines.ToString()+" IP:"+IP+" ServerTime:"+ServerTime.ToString());
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:13,代码来源:KeepAliveReplyPacket.cs

示例4: Read

 /// <summary>
 /// 给定一个输入流,解析SendFileRequest结构
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void Read(ByteBuffer buf)
 {
     // 跳过空格符和分隔符
     buf.GetChar();
     // 获取后面的所有内容
     byte[] b = buf.GetByteArray(buf.Remaining());
     // 找到分隔符
     int i = Array.IndexOf<byte>(b, 0, (byte)0x1F);
     // 得到文件名
     FileName = Utils.Util.GetString(b, 0, i);
     // 得到文件大小的字符串形式
     String sizeStr = Utils.Util.GetString(b, i + 1, b.Length - 6 - i);
     FileSize = Utils.Util.GetInt(sizeStr, 0);
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:18,代码来源:FileInfo.cs

示例5: ReadMobileQQ2SMS

 /// <summary>读取移动QQ用户消息(通过手机号描述)
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void ReadMobileQQ2SMS(ByteBuffer buf)
 {
     // 未知1字节
     buf.Get();
     // 发送者,这种情况下都置为10000
     Sender = 10000;
     // 手机号码
     SenderName = Utils.Util.GetString(buf, (byte)0, 18);
     // 未知2字节
     buf.GetChar();
     // 时间
     Time = (long)buf.GetInt() * 1000L;
     // 未知的1字节,0x03
     buf.Get();
     // 消息内容
     Message = Utils.Util.GetString(buf, (byte)0);
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:20,代码来源:SMS.cs

示例6: Read

        /// <summary>
        ///  给定一个输入流,解析FriendStatus结构
        /// </summary>
        /// <param name="buf">The buf.</param>
        public void Read(ByteBuffer buf)
        {
            // 000-003: 好友QQ号
            QQ = buf.GetInt();
            // 004: 0x01,未知含义
            Unknown1 = buf.Get();
            // 005-008: 好友IP
            IP = buf.GetByteArray(4);
            // 009-010: 好友端口
            Port = buf.GetUShort();
            // 011: 0x01,未知含义
            Unknown2 = buf.Get();
            // 012: 好友状态
            Status = (QQStatus)buf.Get();
            // 013-014: 未知含义
            Version = buf.GetChar();
            // 015-030: key,未知含义
            UnknownKey = buf.GetByteArray(QQGlobal.QQ_LENGTH_KEY);

            UserFlag = buf.GetUInt();
            // 2个未知字节
            Unknown3 = buf.GetUShort();
            // 1个未知字节
            Unknown4 = buf.Get();
            buf.GetInt();
        }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:30,代码来源:FriendStatus.cs

示例7: ParseBody

        ///// <summary>
        ///// QQ群列表
        ///// </summary>
        //public List<ClusterInfo> ClusterList { get; set; }
        protected override void ParseBody(ByteBuffer buf)
        {
            #if DEBUG
            Client.LogManager.Log(ToString() + " Decoded Data:" + Utils.Util.ToHex(buf.ToByteArray()));
            #endif

            ReplyCode = buf.GetChar();//00 9C
            buf.GetInt();//00 00 00 00
            NextPos = buf.GetUShort();
            Finished = !(ReplyCode == 0x038A && NextPos > 0);
            //this.ClusterList = new List<ClusterInfo>();
            //this.QQFriendList = new List<QQFriend>();
            this.QQList = new List<QQBasicInfo>();
            while (buf.Position + 2 < buf.Length)
            {
                int number = buf.GetInt();
                QQType type =(QQType) buf.Get();
                byte gid = buf.Get();

                QQBasicInfo qq = new QQBasicInfo(number, type, ((int)gid) / 4);
                //qq.UIN = number;
                //qq.GroupId = ((int)gid) / 4;
                //qq.Type = (QQType)type;
                this.QQList.Add(qq);
                //if (type == 0x04)
                //{
                //    ClusterInfo ci = new ClusterInfo();
                //    ci.ClusterId =(uint) number;//群内部号码
                //    this.ClusterList.Add(ci);
                //}
                //else if (type == 0x01)
                //{
                //    QQFriend friend = new QQFriend();

                //    friend.QQ = number;
                //    friend.GroupId = ((int)gid)/4;
                //    this.QQFriendList.Add(friend);
                //}
                //else
                //{
                //    Client.LogManager.Log("unknown type: type=0x"+type.ToString("X2")+" number="+number.ToString() +" gid=0x"+gid.ToString("X2"));
                //}

            }
        }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:49,代码来源:LoginGetListReplyPacket.cs

示例8: ReadTempClusterInfo

 /// <summary>
 /// 读取临时群信息
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void ReadTempClusterInfo(ByteBuffer buf)
 {
     Type = (ClusterType)buf.Get();
     // 父群内部ID
     ExternalId = buf.GetUInt();
     // 临时群内部ID
     ClusterId = buf.GetUInt();
     Creator = buf.GetUInt();
     AuthType = (AuthType)buf.Get();
     // 未知的1字节
     buf.Get();
     Category = buf.GetChar();
     // 群组名称的长度
     int len = (int)buf.Get();
     byte[] b1 = buf.GetByteArray(len);
     Name = Util.GetString(b1);
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:21,代码来源:ClusterInfo.cs

示例9: ParseBody

 protected override void ParseBody(ByteBuffer buf)
 {
     #if DEBUG
     Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
     FriendQQ = buf.GetUInt();
     buf.GetUInt();
     buf.GetUInt();
     Status = (QQStatus)buf.Get();
     Client.QQUser.Friends.SetFriendStatus((int)FriendQQ, Status);
     ClientVersion = buf.GetChar();
     UnknownKey = buf.GetByteArray(QQGlobal.QQ_LENGTH_KEY);
     UserFlag = buf.GetUInt();
     MyQQ = buf.GetUInt();
     buf.GetChar();
     buf.Get();
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:17,代码来源:FriendChangeStatusPacket.cs

示例10: Read

 /// <summary>
 /// 给定一个输入流,解析NormalIMHeader结构
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void Read(ByteBuffer buf)
 {
     // 发送者的QQ版本
     SenderVersion = buf.GetChar();
     // 发送者的QQ号
     Sender = buf.GetInt();
     // 接受者的QQ号
     Receiver = buf.GetInt();
     // md5处理的发送方的uid和session key,用来在传送文件时加密一些消息
     FileSessionKey = buf.GetByteArray(16);
     // 普通消息类型,比如是文本消息还是其他什么消息
     Type = (NormalIMType)buf.GetUShort();
     // 消息序号
     Sequence = buf.GetChar();
     // 发送时间
     SendTime = (long)buf.GetUInt() * 1000L;
     // 发送者头像
     SenderHeader = buf.GetChar();
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:23,代码来源:NormalIMHeader.cs

示例11: ParseBody

 protected override void ParseBody(ByteBuffer buf)
 {
     #if DEBUG
     Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
     SubCommand = buf.Get();
     buf.GetChar();//0006
     byte verify = buf.Get();
     if (verify != 0)
     {
         if (buf.Position == buf.Length)//输入的验证码不正确
         {
             //应该返回验证码不正确的消息
             IsWrongVerifyCode = true;
             Client.LogManager.Log(ToString() + " 验证码不正确!");
             return;
         }
         NeedVerify = true;//需要输入验证码
         int len = buf.GetUShort();
         Url = Utils.Util.GetString(buf.GetByteArray(len));
     //                string getQQSession = "";
     //                VerifyCodeFileName=Utils.Util.MapPath("\\verify\\" + Client.QQUser.QQ + ".jpg");
     //                Utils.Util.DownLoadFileFromUrl(url, VerifyCodeFileName, out getQQSession);
     //#if DEBUG
     //                Client.LogManager.Log(ToString() + string.Format(" url:{0}, Session:{1},Code File:{2}", url, getQQSession, VerifyCodeFileName));
     //#endif
     //                Client.QQUser.QQKey.QQSessionToken = Utils.Util.GetBytes(getQQSession);
     }
     else
     {
         int len = buf.GetUShort();
         Token = buf.GetByteArray(len);
     }
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:34,代码来源:RequestTokenReplyPacket.cs

示例12: Read09

 /// <summary>
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void Read09(ByteBuffer buf)
 {
     fontFlag = buf.GetChar();
     // 分析字体属性到具体的变量
     // 字体大小
     FontSize = fontFlag & 0x1F;
     // 组体,斜体,下画线
     bold = (fontFlag & 0x20) != 0;
     italic = (fontFlag & 0x40) != 0;
     underline = (fontFlag & 0x80) != 0;
     // 字体颜色rgb
     Red = (int)buf.Get();
     Green = (int)buf.Get();
     Blue = (int)buf.Get();
     // 1个未知字节
     buf.Get();
     // 消息编码,这个据Gaim QQ的注释,这个字段用处不大,说是如果在一个英文windows
     // 里面输入了中文,那么编码是英文的,按照这个encoding来解码就不行了
     // 不过我们还是得到这个字段吧,后面我们采用先缺省GBK解码,不行就这个encoding
     // 解码,再不行就ISO-8859-1的方式
     EncodingCode = (Charset)buf.GetChar();
     Encoding = Utils.Util.GetEncodingString(EncodingCode);
     // 字体名称,字体名称也有中文的也有英文的,所以。。先来试试缺省的
     FontName = Utils.Util.GetString(buf.GetByteArray(buf.Length - buf.Position - 1));
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:28,代码来源:FontStyle.cs

示例13: ParseBody

        protected override void ParseBody(ByteBuffer buf)
        {
            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
            ReplyCode = buf.Get();
            buf.GetInt();
            switch (ReplyCode)
            {
                case 0x88:
                    buf.GetInt();//00000003 unknown
                    this.Level = buf.GetUShort();
                    this.ActiveDays = buf.GetUShort();
                    buf.GetChar();//unknown
                    this.UpgradeDays = buf.GetUShort();
                    Client.LogManager.Log(ToString() + " " + string.Format("level:{0} active_days:{1} upgrade_days:{2}", this.Level, this.ActiveDays, this.UpgradeDays));
                    break;
                default:
                    Client.LogManager.Log(ToString()+"unknown ReplyCode:0x"+ReplyCode.ToString("X"));
                    break;

            }
        }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:23,代码来源:GetLevelReplyPacket.cs

示例14: ParseBody

        /// <summary>
        /// 解析包体,从buf的开头位置解析起
        /// <remark>abu 2008-02-18 </remark>
        /// </summary>
        /// <param name="buf">The buf.</param>
        protected override void ParseBody(ByteBuffer buf)
        {
            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
            // 操作字节,下载为0x1F
            SubCommand = buf.Get();
            if (SubCommand == 0x1F)
            {
                // 起始好友号
                BeginFrom = buf.GetUInt();
                if (BeginFrom == 0x1000000) //no group labels info ??
                {
                    return;

                }
                if (BeginFrom != 0x00)
                {
                    Client.LogManager.Log("BeginFrom==0x"+BeginFrom.ToString("X"));
                }
                buf.Get();//0x17
                buf.GetChar();

                // 循环读取各好友信息,加入到list中
                Groups = new List<Group>();
                while (buf.HasRemaining())
                {
                    Group g = new Group(buf);
                    Groups.Add(g);
                }

            }
        }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:38,代码来源:DownloadGroupFriendReplyPacket.cs

示例15: CheckTcp

 /// <summary>检查一个包是否是tcp包
 /// </summary>
 /// <param name="buf">The buf.</param>
 /// <returns>true表示是</returns>
 private bool CheckTcp(ByteBuffer buf)
 {
     //buffer length不大于2则连个长度字段都没有
     int bufferLength = buf.Length - buf.Position;
     if (bufferLength < 2) return false;
     // 如果可读内容小于包长,则这个包还没收完
     length = buf.GetChar(offset);
     if (length <= 0 || length > bufferLength)
         return false;
     // 再检查包头包尾
     if (buf.Get(offset + 2) == QQGlobal.QQ_HEADER_BASIC_FAMILY)
         if (buf.Get(offset + length - 1) == QQGlobal.QQ_TAIL_BASIC_FAMILY)
             return true;
     return false;
 }
开发者ID:leaker,项目名称:fuhj-widgets,代码行数:19,代码来源:BasicFamilyParser.cs


注:本文中的System.ByteBuffer.GetChar方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。