16进制转换有关问题
16进制转换问题
问题1:
在直角坐标系中有一个坐标X=4200,Y=-8400,现将其转换为十六进制的。其中X、Y各占三个字节。最高位是符号位,0为正,1为负。
如4200的二进制是001000001101000,X是正数,故最高位还是0,用16进制表示就是1068,不足三个字节,前面加0,即为001068
8400的二进制是0010000011010000,Y是负数,故最高位是1, 即为1010000011010000,用16进制表示就是A0D0,不足三个字节,前面加0,即为00 A0D0。
问题2
上个问题的拟问题,有这样的字符串“00106800A0D0”,取出前6个字符串,将其转换成两个坐标,还要根据最高位判断是正还是负。
------解决方案--------------------
改一下...i不可能>short.MaxValue...-_-!
问题1:
在直角坐标系中有一个坐标X=4200,Y=-8400,现将其转换为十六进制的。其中X、Y各占三个字节。最高位是符号位,0为正,1为负。
如4200的二进制是001000001101000,X是正数,故最高位还是0,用16进制表示就是1068,不足三个字节,前面加0,即为001068
8400的二进制是0010000011010000,Y是负数,故最高位是1, 即为1010000011010000,用16进制表示就是A0D0,不足三个字节,前面加0,即为00 A0D0。
问题2
上个问题的拟问题,有这样的字符串“00106800A0D0”,取出前6个字符串,将其转换成两个坐标,还要根据最高位判断是正还是负。
------解决方案--------------------
改一下...i不可能>short.MaxValue...-_-!
- C# code
public string BTConvert(short i) { if (i < 0) { return (short.MaxValue + 1 - i).ToString("X2").PadLeft(6, '0'); } else { return i.ToString("X2").PadLeft(6, '0'); } } public short BTConvert(string s) { short i = short.Parse(s, System.Globalization.NumberStyles.HexNumber); if (i < 0) { return (short)(short.MaxValue + 1 - i); } else { return i; } }