请教大家,谢谢!有一个十六进制数,转成十进制的数;
              uint i = 0x6f;
            string s1 = System.Convert.ToString(i, 10);
            uint ii = uint.Parse(s1);有一个十进制的数,转成十六进制的;
            uint j = 111;
            string s2 = System.Convert.ToString(j, 16);
            uint jj = "0x" + uint.Parse(s2);///错误将2个十进制的byte,拼装成一个十六进制的ushort,结构如下吧,一共16bit,前面8位是用户名长度,后面8位是密码长度,这16位在类中用一个ushort字段表示,内容为16进制的。
    0                   1
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | User Name Len | Password Len  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

解决方案 »

  1.   

    楼上的同学,请看清楚帖子,我要赋值到uint里面去,不是tostring就完了,请给出实际可行的方案,呵呵
      

  2.   


    将2个十进制的byte,拼装成一个十六进制的ushort,结构如下吧,
    一共16bit,前面8位是用户名长度,后面8位是密码长度,这16位在类中用一个ushort字段表示,内容为16进制的。

        byte lengthUserName = 15;
        byte lengthPassword = 6;
        ushort whatever = (ushort)((lengthPassword << 8) + lengthUserName);另外,目前整数在电脑的内部表示都是二进制的。
      

  3.   

    使用数值类型保存时,是不分进制的,都是2进制,只有使用字符串类型保存数值时才区分是16进制还是10进制。
    在将16进制表示的字符串转换成数值型时要用Parse(String, NumberStyles)这个重载形式,其中NumberStyles枚举指定为System.Globalization.NumberStyles.HexNumber,例如下面的语句输出为255:
    Console.Write(uint.Parse("ff", System.Globalization.NumberStyles.HexNumber));第二个问题可以这样:
    byte namelen=2;
    byte passlen=4;
    ushort u=(ushort)(namelen*256+passlen);
      

  4.   

    在计算机中任何数据都是二进制数据...而数字...16进制还是10进制只对“人”有意义...对电脑来说不存在区别...所以你用uint转来转去只是多此一举...你的问题唯一要注意的是byte有符号位uint没有符号位...
      

  5.   


    uint jj = "0x" + uint.Parse(s2);///错误 改成uint jj = uint.Parse("0x"+s2);
    ps:正如楼上诸位说的那样,这样改没啥意义
      

  6.   

    不好意思,应该是这样uint jj = uint.Parse("0x"+s2, System.Globalization.NumberStyles.HexNumber);