原文參考: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;
}