コード例 #1
0
ファイル: MQMessage.cs プロジェクト: wyh0395/Berry
        public string ReadString(int length)
        {
            string result = "";

            if (this.DataLength == 0)
            {
                this.binaryReader.ReadString();
            }
            int num = length * 2;

            if (num != 0)
            {
                int    options    = 0;
                long   position   = this.memoryStream.Position;
                int    dataLength = this.DataLength;
                byte[] inString   = this.binaryReader.ReadBytes(dataLength);
                this.Seek((int)position);
                if (this.CharacterSet == 1200 && (this.Encoding & 15) == 1)
                {
                    options = 268435984;
                }
                byte[] array;
                uint   num3;
                uint   num2 = CommonServices.ConvertString(this.CharacterSet, 1200, inString, dataLength, out array, ref num, options, out num3);
                if (num2 != 0u && 276848725u != num2)
                {
                    base.ThrowNewMQException(2, 2195);
                }
                this.Seek((int)position + (int)num3);
                result = System.Text.Encoding.Unicode.GetString(array, 0, num);
            }

            return(result);
        }
コード例 #2
0
ファイル: MQMessage.cs プロジェクト: wyh0395/Berry
        private void WriteString(string s, bool bWriteUTF)
        {
            int options      = 0;
            int characterSet = this.CharacterSet;

            if (characterSet != 0)
            {
                if (characterSet != 1200)
                {
                    goto IL_6B;
                }
            }
            else
            {
                this.CharacterSet = 1200;
            }
            if ((this.Encoding & 15) != 1)
            {
                this.WriteChars(s);
                goto IL_12A;
            }
            options = 268435744;
IL_6B:
            int byteCount = System.Text.Encoding.Unicode.GetByteCount(s);

            byte[] array = new byte[byteCount];
            System.Text.Encoding.Unicode.GetBytes(s, 0, s.Length, array, 0);
            int num = 0;

            byte[] array2;
            uint   num3;
            uint   num2 = CommonServices.ConvertString(1200, this.CharacterSet, array, byteCount, out array2, ref num, options, out num3);

            if (num2 != 0u)
            {
                base.ThrowNewMQException(2, 2195);
            }
            if (bWriteUTF)
            {
                if (num > 65535)
                {
                    base.ThrowNewMQException(2, 2190);
                }
                else
                {
                    ushort num4  = (ushort)num;
                    byte[] bytes = BitConverter.GetBytes(num4);
                    Array.Reverse(bytes);
                    this.binaryWriter.Write(bytes);
                }
            }
            this.binaryWriter.Write(array2, 0, num);
            IL_12A :;
        }
コード例 #3
0
ファイル: CommonServices.cs プロジェクト: wyh0395/Berry
 public static uint ConvertString(int fromCCSID, int toCCSID, byte[] inString, int inLength, out byte[] outString, ref int outLength, int options, out uint bytesConverted)
 {
     return(CommonServices.ConvertString(string.Empty, fromCCSID, toCCSID, inString, inLength, out outString, ref outLength, options, out bytesConverted));
 }