随手写的,没测试:
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();
}

解决方案 »

  1.   

    我是想问如何把上面两个程序正和在一个函数里。用C#写出来。不是单村问下面那个函数,上面的写在按钮里。没写在函数里。我不是指void codetest::ToHexStr(CString tt)这一个函数。
    我是指如何完成以上操作。
    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);
      

  2.   

    ToHexStr这函数只是一部分,不是解码的。我不需要写这个。因为C#里自动就有。我只想知道
    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#这是解吗的。
      

  3.   

    我想你可以从下面的代码中得到启示:
    你知道把字符串变成数据流就可以了!  
    /// <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;
      }
      
      

  4.   

    这个是将字符串转化成16进制的字符串的简单方法:
    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;
    }
      

  5.   

    请问如何实现?解码的要求是
    不是十六进制转换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吗?最好那上面聊。谢谢