1. 假设现在要接收许多(甚至是无限)的数据,但这些数据有范围:比如现在要读取串口发送的数据,这些数据的范围为0x00 - 0xFF。
2. 如直接定义数组或容器进行接收,需求无限内存。这种方法不可行。
3.一种巧妙的方法就是:定义一个涵盖所需数据范围大小的数组(Data[0xFF+1]),但接收到一个数据时,以该数据为下标,对数组对应位置进行赋值(比如接收到数据为0x0A,则令Data[0x0A]=0),接收到的第二个数据就为1(Data[0x1C]=1),以此类推。则每个接收到的数据就会拥有各自对应的值。
4.然后定义一个用于显示数据的数组ShowData[500],用Data[]的值作为下标。此时,接收数据时,用其Data[]的值为下标将其数据存储到ShowData[0]中,下一个接收到的不同数据依次放入ShowData[i++]中。(比如,现在接收到0x0A的数据,由3知其Data[0x0A]=0),则将数据内容存到ShowData[0]中····,假设经过若干次数据接收后,又在一次接收到0x0A的数据,由3知,其Data[0x0A]=0,故将其数据内容将数据内容存到ShowData[0]中,之前的数据就被覆盖了。于是,一个有限的数组就可以接收到无限的数据并进行显示了)。
时间: 2024-10-06 16:13:23