qq_26534747
ChaveChen
2015-12-07 03:07
采纳率: 63%
浏览 4.0k

c# Byte的高四位和低四位

一个两位数int;如何将int十位上的数强制转换为byte后取出该字节的高四位转换给另一个byte类型的b1;低四位给另一个b2;最后得到2个字节,怎么做?谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • caozhy
    已采纳
     int x = 123;
    int 十位数 = (x / 10) % 10;
    byte b1 =  (byte)(十位数 / 16);
    byte b2 =  (byte)(十位数 % 16);
    
    点赞 评论
  • bulusli3
    lhl_lqc 2015-12-07 04:09

    你说的十位上的数是啥意思?比如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 );}可以得到二进制表示,然后自己可以通过字符串操作取得高四位和低四位。

    点赞 评论
  • John_ToString
    John_ToString 2015-12-07 07:05

    例如说: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则为负数,负数是以补数的形式表示的

    点赞 评论
  • bulusli3
    lhl_lqc 2015-12-09 02:52
      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];
        }
    
    点赞 评论
  • chj4129
    云霏阳 2015-12-09 03:01

    试试下面:
    uchar a = val/10;
    b1 = a >> 4;
    b2 = a & 0x0f;

    点赞 评论
  • chj4129
    云霏阳 2015-12-09 03:02

    试试下面:
    uchar a = val/10;
    b1 = a >> 4;
    b2 = a & 0x0f;

    点赞 评论

相关推荐