C# 字节(数组)与位之间的计算 | 您所在的位置:网站首页 › 字符串和字节数组之间的转换 › C# 字节(数组)与位之间的计算 |
C# 字节(数组)\16\32\64…位数据与位之间的计算
运算符介绍
运算名称运算符号左移与&或|非^
截取数据
例如: UInt32 mini = 0x000ED0FF; UInt16 low16 = (UInt16)(mini & 0xFFFF); UInt16 hight16 = (UInt16)((mini>>16) & 0xFFFF); byte low16lowByte = (byte)(mini & 0xFF); byte low16HighByte = (byte)((mini >> 8) & 0xFF); byte high16lowByte = (byte)(mini>>16 & 0xFF); byte high16HighByte = (byte)((mini >> 24) & 0xFF);扩展总结: 截取数据时,从数据源中的x位(计数从0开始)开始,连续截取y位。 公式为: 目标数据类型 result =(强转为目标类型)((数据源>>x)&yHex) 注:yHex表示将y个1(2进制)转换成16进制 例如:从一个32位无符号数据:0x000ED0FF中的第2位开始,截取11位的数据为: UInt16 res = (UInt16)((mini >> 2) & 0x07FF); 拼装数据在实际应用开发过程中,我们需要解析和拼装数据,拼装数据多数情况下是将不规则的数据组装成规整的字节数组。下面我们研究下如何将多个信息拼装到某一个字节或者多个连续字节中。 将下面三个数据拼装到单个字节中。 byte a ,byte b , byte c。 其组装到目标字节的结构如下表所示: 76543210aaaa-b-ca占用高4位,b占用第2位,c占用第0位 示例代码如下所示: // 1.获取待拼接数据 byte a = 0x09; byte b = 0x01; byte c = 0x01; // 2.将拼接数据按位切分(保证数据完整性,防止溢出),然后移动到目标位 byte hh = (byte)((a & 0x0F) |
CopyRight 2018-2019 实验室设备网 版权所有 |