/// <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); }
/// <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); }
/// <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); }
/// <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); }