一个两位数int;如何将int十位上的数强制转换为byte后取出该字节的高四位转换给另一个byte类型的b1;低四位给另一个b2;最后得到2个字节,怎么做?谢谢!
int x = 123;
int 十位数 = (x / 10) % 10;
byte b1 = (byte)(十位数 / 16);
byte b2 = (byte)(十位数 % 16);
你说的十位上的数是啥意思?比如48:是得到4的字节?还是得到40的字节? 不过不管你要的是哪种,都可以直接将整数转换为byte。比如:int a=46;则byte为byte b=(byte)a;得到byte后 通过for( int i = 7; i >= 0; i -- ) { Console.Write( ( b >> i ) & 0x01 );}可以得到二进制表示,然后自己可以通过字符串操作取得高四位和低四位。
例如说:int x = 206; b =(byte)x ;System.out.print(b);为什么用266输出的是10。
266=(00000000)(00000000)(00000001)(00001010)这个是怎么理解呢是用好像16进制转2进制的样子
用206输出的-50呢
原因:byte 是8位,即1个字节。取值范围为127 ~ -128。
206二进制表示为11001110,最高位为1则为负数,取补加1后,十进制表示为-50,最高位为1则为负数,负数是以补数的形式表示的
static void Main(string[] args)
{
byte b = 49;
BitArray origin = new BitArray(new byte[] { b });
BitArray high = new BitArray(8, false);//高四位 位数组
BitArray low = new BitArray(8, false);//低四位 位数组
int len = origin.Length;
for (int i = len - 1; i >= 0; i--)
{
if (i >= 4)
{
high[i - 4] = origin[i];//填充高四位到 位数组中的后四位
}
else
{
low[i] = origin[i]; //填充低四位到 位数组中的后四位
}
}
Console.WriteLine("high:" + ConvertToByte(high));
Console.WriteLine("low:" + ConvertToByte(low));
Console.ReadKey();
}
public static byte ConvertToByte(BitArray bits)
{
if (bits.Length != 8)
{
throw new ArgumentException("bits");
}
byte[] bytes = new byte[1];
bits.CopyTo(bytes, 0);
return bytes[0];
}
试试下面:
uchar a = val/10;
b1 = a >> 4;
b2 = a & 0x0f;
试试下面:
uchar a = val/10;
b1 = a >> 4;
b2 = a & 0x0f;