问题描述
- c# Byte的高四位和低四位
- 一个两位数int;如何将int十位上的数强制转换为byte后取出该字节的高四位转换给另一个byte类型的b1;低四位给另一个b2;最后得到2个字节
解决方案
int x = 123;int 十位数 = (x / 10) % 10;byte b1 = (byte)(十位数 / 16);byte b2 = (byte)(十位数 % 16);
解决方案二:
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]; }
解决方案三:
“低八位、高八位;低四位、高四位”
解决方案四:
你说的十位上的数是啥意思?比如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 );}可以得到二进制表示,然后自己可以通过字符串操作取得高四位和低四位。
解决方案五:
试试下面:
uchar a = val/10;
b1 = a >> 4;
b2 = a & 0x0f;
解决方案六:
试试下面:
uchar a = val/10;
b1 = a >> 4;
b2 = a & 0x0f;
解决方案七:
例如说: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则为负数,负数是以补数的形式表示的
时间: 2024-10-28 07:26:04