zoukankan      html  css  js  c++  java
  • 手机短信PDU字符串中用到的7bit加密解密函数

    原文参考:http://www.cnblogs.com/Engin/archive/2010/11/07/1871154.html

    整理的代码如下:

            /// <summary>
            /// PDU字符串用到的7bit的加密函数
            /// </summary>
            /// <param name="len">用户数据长度</param>
            /// <param name="strUserData">数据部分PDU字符串</param>
            /// <returns></returns>
            public string PDU7bitContentEncoder(string strUserData)
            {
                string result = string.Empty;
                string resultLength = strUserData.Length.ToString("X2");                  //7bit编码 用户数据长度:源字符串长度

                Encoding encodingAsscii = Encoding.ASCII;
                byte[] bytes = encodingAsscii.GetBytes(strUserData);

                string temp = string.Empty;                                     //存储中间字符串 二进制串
                string tmp;
                for (int i = strUserData.Length; i > 0; i--)                          //高低交换 二进制串
                {
                    tmp = Convert.ToString(bytes[i - 1], 2);
                    while (tmp.Length < 7)                                      //不够7位,补齐
                    {
                        tmp = "0" + tmp;
                    }
                    temp += tmp;
                }

                for (int i = temp.Length; i > 0; i -= 8)                    //每8位取位为一个字符 即完成编码
                {
                    if (i > 8)
                    {
                        result += Convert.ToInt32(temp.Substring(i - 8, 8), 2).ToString("X2");
                    }
                    else
                    {
                        result += Convert.ToInt32(temp.Substring(0, i), 2).ToString("X2");
                    }
                }

                return result;
            }

            /// <summary>
            /// PDU字符串用到的7bit的解密函数
            /// </summary>
            /// <param name="len">用户数据长度</param>
            /// <param name="strUserData">数据部分PDU字符串</param>
            /// <returns></returns>
            public string PDU7bitContentDecoder(string strUserData)
            {
                string result = string.Empty;
                byte[] b;

                b = Hex2Bin(strUserData);

                Array.Reverse(b);       //字节串翻转

                result = Bin2BinStringof8Bit(b);

                result = BinStringof8Bit2AsciiwithReverse(result);

                return result;
            }

  • 相关阅读:
    生成类似于MongoDB产生的ObjectId
    链式编程:遇到多个构造器参数(Constructor Parameters)时要考虑用构建器(Builder)
    mysql时间字符串按年/月/天/时分组查询 -- date_format
    根据模板导出excel
    九度 1188 约瑟夫环问题
    快速排序
    Linux 命令
    volatile小记
    线程池ThreadPoolExecutor
    CyclicBarrier、CountDownLatch与Semaphore的小记
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306775.html
Copyright © 2011-2022 走看看