在直角坐标系中有一个坐标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个字符串,将其转换成两个坐标,还要根据最高位判断是正还是负。
7 个解决方案
#1
帮帮忙亚
#2
不明白你的意思,
1. 是要求将10进制转换为16进制吗? 负数是否用补码表示?
2.前6个"001068"转成两个坐标? 各取三个转成10进制,还是?
1. 是要求将10进制转换为16进制吗? 负数是否用补码表示?
2.前6个"001068"转成两个坐标? 各取三个转成10进制,还是?
#3
有符号...无符号...而已...
public string BTConvert(short i)
{
if (i > short.MaxValue | 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 | i > short.MaxValue)
{
return (short)(short.MaxValue + 1 - i);
}
else
{
return i;
}
}
#4
改一下...i不可能>short.MaxValue...-_-!
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;
}
}
#5
看不懂
#6
问题1:有个错误,如果是-8400米,8400的二进制是“100000 11010000”,不足三字节,补充为“00000000 00100000 11010000”,因为是负数,最高为置1,则变为“10000000 00100000 11010000”,转化为十六进制“8020D0”
有三个小问题:不足三个字节,怎么补充为三字节?
最高位怎样置1?(因为不是有符号和无符号的问题,比如说高度是以米为单位,最高位就置0,以千米为单位,就置1)
得到了X坐标的十六机制是001068,Y坐标的十六机制是8020D0,怎么样把它合成“0010688020D0”,是不是需要用到移位运算?
有三个小问题:不足三个字节,怎么补充为三字节?
最高位怎样置1?(因为不是有符号和无符号的问题,比如说高度是以米为单位,最高位就置0,以千米为单位,就置1)
得到了X坐标的十六机制是001068,Y坐标的十六机制是8020D0,怎么样把它合成“0010688020D0”,是不是需要用到移位运算?
#7
问题2:
“0010688020D0”前三个字节表示X坐标,后三个字节表示Y坐标,是不是把它看作字符串,取出前六个字符,转化为十进制,就作为X坐标,后6个字符转化为十进制,作为Y坐标?
“0010688020D0”前三个字节表示X坐标,后三个字节表示Y坐标,是不是把它看作字符串,取出前六个字符,转化为十进制,就作为X坐标,后6个字符转化为十进制,作为Y坐标?
#1
帮帮忙亚
#2
不明白你的意思,
1. 是要求将10进制转换为16进制吗? 负数是否用补码表示?
2.前6个"001068"转成两个坐标? 各取三个转成10进制,还是?
1. 是要求将10进制转换为16进制吗? 负数是否用补码表示?
2.前6个"001068"转成两个坐标? 各取三个转成10进制,还是?
#3
有符号...无符号...而已...
public string BTConvert(short i)
{
if (i > short.MaxValue | 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 | i > short.MaxValue)
{
return (short)(short.MaxValue + 1 - i);
}
else
{
return i;
}
}
#4
改一下...i不可能>short.MaxValue...-_-!
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;
}
}
#5
看不懂
#6
问题1:有个错误,如果是-8400米,8400的二进制是“100000 11010000”,不足三字节,补充为“00000000 00100000 11010000”,因为是负数,最高为置1,则变为“10000000 00100000 11010000”,转化为十六进制“8020D0”
有三个小问题:不足三个字节,怎么补充为三字节?
最高位怎样置1?(因为不是有符号和无符号的问题,比如说高度是以米为单位,最高位就置0,以千米为单位,就置1)
得到了X坐标的十六机制是001068,Y坐标的十六机制是8020D0,怎么样把它合成“0010688020D0”,是不是需要用到移位运算?
有三个小问题:不足三个字节,怎么补充为三字节?
最高位怎样置1?(因为不是有符号和无符号的问题,比如说高度是以米为单位,最高位就置0,以千米为单位,就置1)
得到了X坐标的十六机制是001068,Y坐标的十六机制是8020D0,怎么样把它合成“0010688020D0”,是不是需要用到移位运算?
#7
问题2:
“0010688020D0”前三个字节表示X坐标,后三个字节表示Y坐标,是不是把它看作字符串,取出前六个字符,转化为十进制,就作为X坐标,后6个字符转化为十进制,作为Y坐标?
“0010688020D0”前三个字节表示X坐标,后三个字节表示Y坐标,是不是把它看作字符串,取出前六个字符,转化为十进制,就作为X坐标,后6个字符转化为十进制,作为Y坐标?