1、目标
对两个字节进行比较,统计变化位数、一位发生变化的位数、二位发生变化的位数、多位发生变化的位数。
2、代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ReverseStatisticsApp
{public partial class Form1 : Form{//统计数据int[] statisticsBits = new int[4];/// <summary>/// 构造函数/// </summary>public Form1(){InitializeComponent();}/// <summary>/// 开始统计/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){byte source=Convert.ToByte("0x"+textBox1.Text.Trim(),16);byte dest = Convert.ToByte("0x" + textBox2.Text.Trim(), 16);for(int i = 0; i < 4; i++){statisticsBits[i] = 0;}ByteBitCompare(source, dest,ref statisticsBits);label3.Text = $"变化位数:{statisticsBits[0]},一位变化:{statisticsBits[1]},二位变化:{statisticsBits[2]},多位变化:{statisticsBits[3]}";}/// <summary>/// 位统计/// </summary>/// <param name="continueBits"></param>/// <param name="statisticsBits"></param>public static void BitStatistics(int continueBits, ref int[] statisticsBits){if (continueBits == 1){statisticsBits[1]++;}else if (continueBits == 2){statisticsBits[2]++;}else{statisticsBits[3]++;} }/// <summary>/// 字节位比较/// </summary>/// <param name="sample"></param>/// <param name="data"></param>/// <param name="statisticsBits"></param>public static void ByteBitCompare(byte sample, byte data,ref int[] statisticsBits){int tempCount = 0;int temp = sample ^ data;for (int i = 0; i < 8; i++){if ((temp & 0x01) > 0){tempCount++;statisticsBits[0]++;}else{if (tempCount > 0){BitStatistics(tempCount, ref statisticsBits);tempCount = 0;} }temp = temp >> 1;}if (tempCount > 0){BitStatistics(tempCount, ref statisticsBits);}}}
}
3、运行效果