Esempio n. 1
0
        /// <summary>
        /// 字符串转sbyte
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public unsafe static sbyte StringToSbyte(string str)
        {
            byte[] bMsg = HUtil32.StringToByteAry(str);
            IntPtr Buff = Marshal.AllocHGlobal(bMsg.Length + sizeof(int));

            *(int *)Buff = bMsg.Length;
            Marshal.Copy(bMsg, 0, (IntPtr)((byte *)Buff + sizeof(int)), bMsg.Length);
            return((sbyte)Buff);
        }
Esempio n. 2
0
        /// <summary>
        /// 解密消息
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public unsafe static TDefaultMessage DecodeMessage(string str)
        {
            byte[]          EncBuf = new byte[BUFFERSIZE];
            TDefaultMessage Msg;

            byte[] bSrc = HUtil32.StringToByteAry(str);
            Decode6BitBuf(bSrc, EncBuf, bSrc.Length, BUFFERSIZE);
            fixed(byte *pb = EncBuf)
            {
                Msg = *(TDefaultMessage *)(pb);
            }

            return(Msg);
        }
Esempio n. 3
0
        /// <summary>
        /// 加密字符串
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public unsafe static string EncodeString(string str)
        {
            string result;

            byte[] EncBuf  = new byte[BUFFERSIZE];
            byte[] bSrc    = HUtil32.StringToByteAry(str);
            int    DestLen = Encode6BitBuf(bSrc, EncBuf, bSrc.Length, BUFFERSIZE);

            fixed(byte *pb = EncBuf)
            {
                result = HUtil32.SBytePtrToString((sbyte *)pb, 0, DestLen);
            }

            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// 解密字符串
        /// </summary>
        /// <param name="str">密文</param>
        /// <param name="chinese">是否返回中文</param>
        /// <returns></returns>
        public unsafe static string DeCodeString(string str, bool chinese = false)
        {
            string result;

            byte[] EncBuf = new byte[BUFFERSIZE];
            byte[] bSrc   = HUtil32.StringToByteAry(str);
            int    nLen   = Decode6BitBuf(bSrc, EncBuf, bSrc.Length, BUFFERSIZE);

            fixed(byte *pb = EncBuf)
            {
                if (chinese)
                {
                    result = HUtil32.SBytePtrToString((sbyte *)pb, nLen);
                }
                else
                {
                    result = HUtil32.SBytePtrToString((sbyte *)pb, 0, nLen);
                }
            }

            return(result);
        }