首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

16进制转换有关问题

2011-12-24 
16进制转换问题问题1:在直角坐标系中有一个坐标X4200,Y-8400,现将其转换为十六进制的。其中X、Y各占三个字

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...-_-!

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;            }        } 

热点排行