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)为何出来的乱码,具体解码的时候该怎样转换呢。
解决方案 »
- 怎样给EntityFramework的导航传值
- url重写
- 请教-集装箱管理
- 求一个有难度的正则表达式
- Sql Server 2005 安装的问题
- 匹配<table ***>****</table>的正则?
- C#windowsform TSC TTP-244条码打印用C#如何控制纸张大小?急
- asp.net web 应用程序中能使用智能客户端(smart client)吗?我自己编写一个web组件, 如果利用智能客户端,能否实现组件的更新
- 网络数据包截获方法求教???
- 下面的问题怎么实现?
- 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;
}