请教大家,谢谢!有一个十六进制数,转成十进制的数;
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
将2个十进制的byte,拼装成一个十六进制的ushort,结构如下吧,
一共16bit,前面8位是用户名长度,后面8位是密码长度,这16位在类中用一个ushort字段表示,内容为16进制的。
byte lengthUserName = 15;
byte lengthPassword = 6;
ushort whatever = (ushort)((lengthPassword << 8) + lengthUserName);另外,目前整数在电脑的内部表示都是二进制的。
在将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);
uint jj = "0x" + uint.Parse(s2);///错误 改成uint jj = uint.Parse("0x"+s2);
ps:正如楼上诸位说的那样,这样改没啥意义