public string smsPDUEncoded(string srvContent)
{
Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;
string s = null;
byte [] encodedBytes = encodingUTF.GetBytes(srvContent);
for (int i =0;i < encodedBytes.Length;i++)
{
s += BitConverter.ToString(encodedBytes,i,1);
}
return s+"\r\n"+smsPDUDecoded(encodingUTF,encodedBytes);
// s = String.Format("{0:X2}{1}",s.Length / 2,s);
// return s+"\r\n"+smsPDUDecoded(encodingUTF,encodedBytes);
}
public static Byte[] ToHexByte(byte[] bytes)
{
Byte[] bt=new byte[bytes.Length/4];
for (int i = 0; i < bytes.Length; i+=4)
{
//组合两个字符为一个字节
bt[i/4]=(byte)((bytes[i+1]<<4)+bytes[i+3]);
//chars[i * 2] = hexDigits[bytes[i] >> 4];//移位
//chars[i * 2 + 1] = hexDigits[bytes[i] & 0xF];//按位 与
}
return bt;
}
public string smsPDUDecoded(string sss)
{
Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;
byte [] encodedBytes=encodingUTF.GetBytes(sss);
encodedBytes=ToHexByte(encodedBytes);
//encodedBytes=ToHexByte(encodedBytes);
Decoder decoderUTF=encodingUTF.GetDecoder();
char[] s=new char[encodedBytes.Length];
decoderUTF.GetChars(encodedBytes,0,encodedBytes.Length,s,0);
string ss=null;
for (int i=0;i<s.Length;i++)
{
ss+=Convert.ToString(s[i]);
}
ss=encodingUTF.GetString(encodedBytes);
return ss;
}
public string smsPDUDecoded(Encoding encodingUTF,byte[] enc)
{
Decoder decoderUTF=encodingUTF.GetDecoder();
char[] s=new char[enc.Length];
decoderUTF.GetChars(enc,0,enc.Length,s,0);
string ss=null;
for (int i=0;i<s.Length;i++)
{
ss+=Convert.ToString(s[i]);
}
return ss;
}
//!!!!!!!!!!!!!
//smsPDUDecoded(s)为何出来的乱码,具体解码的时候该怎样转换呢。
{
Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;
string s = null;
byte [] encodedBytes = encodingUTF.GetBytes(srvContent);
for (int i =0;i < encodedBytes.Length;i++)
{
s += BitConverter.ToString(encodedBytes,i,1);
}
return s+"\r\n"+smsPDUDecoded(encodingUTF,encodedBytes);
// s = String.Format("{0:X2}{1}",s.Length / 2,s);
// return s+"\r\n"+smsPDUDecoded(encodingUTF,encodedBytes);
}
public static Byte[] ToHexByte(byte[] bytes)
{
Byte[] bt=new byte[bytes.Length/4];
for (int i = 0; i < bytes.Length; i+=4)
{
//组合两个字符为一个字节
bt[i/4]=(byte)((bytes[i+1]<<4)+bytes[i+3]);
//chars[i * 2] = hexDigits[bytes[i] >> 4];//移位
//chars[i * 2 + 1] = hexDigits[bytes[i] & 0xF];//按位 与
}
return bt;
}
public string smsPDUDecoded(string sss)
{
Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;
byte [] encodedBytes=encodingUTF.GetBytes(sss);
encodedBytes=ToHexByte(encodedBytes);
//encodedBytes=ToHexByte(encodedBytes);
Decoder decoderUTF=encodingUTF.GetDecoder();
char[] s=new char[encodedBytes.Length];
decoderUTF.GetChars(encodedBytes,0,encodedBytes.Length,s,0);
string ss=null;
for (int i=0;i<s.Length;i++)
{
ss+=Convert.ToString(s[i]);
}
ss=encodingUTF.GetString(encodedBytes);
return ss;
}
public string smsPDUDecoded(Encoding encodingUTF,byte[] enc)
{
Decoder decoderUTF=encodingUTF.GetDecoder();
char[] s=new char[enc.Length];
decoderUTF.GetChars(enc,0,enc.Length,s,0);
string ss=null;
for (int i=0;i<s.Length;i++)
{
ss+=Convert.ToString(s[i]);
}
return ss;
}
//!!!!!!!!!!!!!
//smsPDUDecoded(s)为何出来的乱码,具体解码的时候该怎样转换呢。
解决方案 »
- 求高手写一个程序!
- datalist 获取不到值?
- TreeView css
- 用byte[]将不同类型文件(如:.bmp、.doc、.txt)存入数据库中后如何读取它们
- 急急急呀::创建的代码文件在生成时总是出现程序“D:\mypro\CSPro3\Proj\obj\Debug\Proj.exe”未定义入口点
- 在c#中打印指定路径的pdf文件,难道真没办法了~~~
- .net 安装问题
- 请问 ClipBoard怎么一次 复制两种格式的数据呢?
- 如何检查软盘是否已经格式化过.?
- List的副本问题
- VisualSourceSafe 哪里有的下载啊
- 求 Microsoft Visual Studio .NET 2003 中文版下载,找了好几天没找到
public static Byte[] ToHexByte(byte[] bytes)
{
Byte[] bt=new byte[bytes.Length/4];
for (int i = 0; i < bytes.Length-3; i+=4)
{
//判断第一个字节
if ( (bytes[i+1]-0x30)>=0x00
&&
(bytes[i+1]-0x30)<=0x09 )
bytes[i+1]=(byte)(bytes[i+1]-0x30);
if ( (bytes[i+1]-0x37)>=0x0A
&&
(bytes[i+1]-0x37)<=0x0F )
bytes[i+1]=(byte)(bytes[i+1]-0x37);
//判断第二个字节
if ( (bytes[i+3]-0x30)>=0x00
&&
(bytes[i+3]-0x30)<=0x09 )
bytes[i+3]=(byte)(bytes[i+3]-0x30);
if ( (bytes[i+3]-0x37)>=0x0A
&&
(bytes[i+3]-0x37)<=0x0F )
bytes[i+3]=(byte)(bytes[i+3]-0x37);
//组合两个字符为一个字节
bt[i/4]=(byte)((bytes[i+1]<<4)+bytes[i+3]);
//chars[i * 2] = hexDigits[bytes[i] >> 4];//移位
//chars[i * 2 + 1] = hexDigits[bytes[i] & 0xF];//按位 与
}
return bt;
}