我写的解码程序:
/// <summary>
/// 中文短信息UCS2解码
/// </summary>
/// <param name="s">要解码的信息</param>
/// <returns>解码后的中文字符串</returns>
static public string DecodingUCS2(string s)
{
byte [] buf=new byte[s.Length];
for(int i=0;i<s.Length;i+=4)
{
buf[i/2]=byte.Parse(s.Substring(2+i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
buf[i/2+1]=byte.Parse(s.Substring(i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
}
return Encoding.Unicode.GetString(buf);
}
/// <summary>
/// 中文短信息UCS2解码
/// </summary>
/// <param name="s">要解码的信息</param>
/// <returns>解码后的中文字符串</returns>
static public string DecodingUCS2(string s)
{
byte [] buf=new byte[s.Length];
for(int i=0;i<s.Length;i+=4)
{
buf[i/2]=byte.Parse(s.Substring(2+i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
buf[i/2+1]=byte.Parse(s.Substring(i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
}
return Encoding.Unicode.GetString(buf);
}
{
string GBCode;
int im,j;
int [] c=new int[2];
SomeArrayFunction.RedimArray(c,strUnicode.Length / 4) '2个字节一个中文
for(j=0;j<strUnicode.Length \ 4 - 1;j++)
{
char d()=strUnicode.ToCharArray(j * 4, 4);
c[j]="&H"+(string)d;
c[j]=ChrW(Val(c(j)));//这个函数我不知道有没有。手头没有资料可以查。不过因该可以自己写。
GBCode += c[j] // '将最后的结果返
}
return GBCode
}
public class SomeArrayFunction
{
public SomeArrayFunction()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 重新生成数组,类似于vb中的Redim函数
/// 示例:arr=(Int32[])RedimArray(arr,5);
/// </summary>
/// <param name="origArray">原数组</param>
/// <param name="desiresize">重新生成的尺寸</param>
/// <returns></returns>
public static Array RedimArray(Array origArray,Int32 desiresize)
{
//判断每个元素的类型
Type t=origArray.GetType().GetElementType();
//构照有预期数目元素的新数组
//该数组的类型必须和原数组类型一致
Array newArray=Array.CreateInstance(t,desiresize);
//将原数组中的元素复制到新数组中 Array.Copy(origArray,0,newArray,0,Math.Min(origArray.Length,desiresize));
//返回新数组
return newArray;
}
}