随手写的,没测试:
public string ConvertToHex(string s)
{
byte[] b = Encoding.Unicode.GetBytes(s);//you can use Ansi,UTF-8...
StringBuilder sb = new StringBuilder();
for (int i=0;i<b.Length;i++)
{
sb.Append(Convert.ToString(b[i],16));
}
return sb.ToString();
}
public string ConvertToHex(string s)
{
byte[] b = Encoding.Unicode.GetBytes(s);//you can use Ansi,UTF-8...
StringBuilder sb = new StringBuilder();
for (int i=0;i<b.Length;i++)
{
sb.Append(Convert.ToString(b[i],16));
}
return sb.ToString();
}
解决方案 »
- 检索 COM 类工厂中 CLSID 为 {79AD7B73-C515-40B4-8B02-CB0F5FA5A1A8} 的组件时失败
- c# 怎么判断word文档中那个文本被加粗了!!
- 求助C语言编程问题
- 在winform中绑定checkedlistbox的问题
- 关于自定义控件的问题~~~急在线等
- 有一个Icon对象,大小是32*32的,要把他变成8*8的,如何操作??
- asp.net中,图片如何显示成原始大小?
- 谁可以给我发一份C#群发邮件的代码....在线等待
- 在datagirdview中怎么获取空白行的行号信息????
- 100分买。。。
- 各位大哥,那有treeview控件下载啊.VB和C#的treeview控件一样吗?
- ListView中的图标可以实现自由拖动吗?
我是指如何完成以上操作。
CString msg1="";
CString msg2="";
m_edit1.GetWindowText(msg1);
int n=msg1.GetLength()/4;
int m=msg1.GetLength()%4;
unsigned char str,str1;
// UpdateData(TRUE);
//先减去0x30
int nn=msg1.GetLength();
msg="";
for(int k=0;k<nn;k++)
{
str=msg1.GetAt(k);
if(str>0x5A)
str-=0x36;
else
str-=0x30;
msg+=str;
// msg2.SetAt(k,str);
}
msg1=msg; for(int i=0;i<n;i++)
for(int j=0;j<3;j++)
{
str=(msg1.GetAt(4*i+j)>>(2*j))+(msg1.GetAt(4*i+j+1)<<(6-2*j));
msg2+=str;
}
if(m==1)
{
str=msg1.GetAt(4*n);
msg2+=str;
}
if(m==2)
{
str=msg1.GetAt(4*n) + (msg1.GetAt(4*n+1)<<6);
msg2+=str;
str=(msg1.GetAt(4*n+1)>>2 );
msg2+=str;
}
if(m==3)
{
str=msg1.GetAt(4*n) + (msg1.GetAt(4*n+1)<<6);
msg2+=str;
str=(msg1.GetAt(4*n+1)>>2) + (msg1.GetAt(4*n+2)<<4);
msg2+=str;
str=msg1.GetAt(4*n+2)>>4;
msg2+=str;
} ToHexStr(msg2);
m_edit2.SetWindowText(ms);
CString msg1="";
CString msg2="";
m_edit1.GetWindowText(msg1);
int n=msg1.GetLength()/4;
int m=msg1.GetLength()%4;
unsigned char str,str1;
// UpdateData(TRUE);
//先减去0x30
int nn=msg1.GetLength();
msg="";
for(int k=0;k<nn;k++)
{
str=msg1.GetAt(k);
if(str>0x5A)
str-=0x36;
else
str-=0x30;
msg+=str;
// msg2.SetAt(k,str);
}
msg1=msg; for(int i=0;i<n;i++)
for(int j=0;j<3;j++)
{
str=(msg1.GetAt(4*i+j)>>(2*j))+(msg1.GetAt(4*i+j+1)<<(6-2*j));
msg2+=str;
}
if(m==1)
{
str=msg1.GetAt(4*n);
msg2+=str;
}
if(m==2)
{
str=msg1.GetAt(4*n) + (msg1.GetAt(4*n+1)<<6);
msg2+=str;
str=(msg1.GetAt(4*n+1)>>2 );
msg2+=str;
}
if(m==3)
{
str=msg1.GetAt(4*n) + (msg1.GetAt(4*n+1)<<6);
msg2+=str;
str=(msg1.GetAt(4*n+1)>>2) + (msg1.GetAt(4*n+2)<<4);
msg2+=str;
str=msg1.GetAt(4*n+2)>>4;
msg2+=str;
} ToHexStr(msg2);如何写。用C#这是解吗的。
你知道把字符串变成数据流就可以了!
/// <summary>
/// 数据流转换为十六进制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
private static string ByteArrayToHexString(byte[] bytes) { if ( bytes == null || bytes.Length == 0 ) throw new ArgumentException( "bytes [] 参数出错" ); StringBuilder hexString = new StringBuilder( 2 * bytes.Length ); for ( int i = 0; i < bytes.Length; i++ )
hexString.AppendFormat( "{0:X2}", bytes[i] ); return hexString.ToString(); } /// <summary>
/// 十六进制字符串转换为数据流
/// </summary>
/// <param name="strHexString"></param>
/// <returns></returns>
private static byte[] HexStringToByteArray(string strHexString)
{
int len = strHexString.Length ;
if ( (len % 2) !=0)
throw new Exception("HexString 字符出错!!"); int byteLen = len /2 ; byte[] bytes = new byte [byteLen]; for (int i=0;i<byteLen ;i++ )
{
bytes[i] = Convert.ToByte( strHexString.Substring( i*2,2),16);
} return bytes;
}
private string zhuanhuan(string a)
{
string s="";
for(int i=0;i<a.Length;i++)
{
char c = char.Parse(a.Substring(i,1));
s += Convert.ToInt16(c).ToString("X");
}
return s;
}
不是十六进制转换10进制的问题。是解码的问题。
比如 4个字节转换成 3个字节
比如。一个string字符串 传来的字符是6位够成一个字节的 共4字节
A1,A2,A3,A4,转换为 另三个字节
首先要 - 0X21才能是可显示,不能超过0X5A
if(a1>0x5A)
A1 6位
A2 6位
A3 6位
A4 6位
那么 解码后 A1的6位 + A2的低2位
A2的4位 + A3的高四位
A3还剩4位+A4的6位。
有MSN和QQ吗?最好那上面聊。谢谢