c# Byte的高四位和低四位

一个两位数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;