VOID SmallShuffleEncoder( UINT32 *psArray, UINT32 *smallSrcVec, UINT32 nodeLen, UINT32 layerNum )//随机编码由u求x(layernum为什么不从psArray内的个数直接得到呢)//因为得到psArrray数目有些难 { UINT32 bitArray0[MAX_NODE_LEN]; UINT32 bitArray1[MAX_NODE_LEN]; UINT32 *singleLayer = NULL; UINT32 *nextSingleLayer = NULL; UINT32 *tmpPtr = NULL; UINT32 len; UINT32 halfLen; INT32 i, j, k; UINT32 repeatTime; UINT32 startIdx; singleLayer = &(bitArray0[0]); for (i = 0; i < nodeLen; i++) { singleLayer[i] = psArray[i];//存入底层 } nextSingleLayer = &(bitArray1[0]); // nextSingleLayer is the layer be written for (i = layerNum; i > 0; i--) { // i is the idx of the layer be read repeatTime = 1 << (layerNum - i); len = nodeLen / repeatTime; halfLen = len / 2; startIdx = 0; for (j = 0; j < repeatTime; j++) { for (k = 0; k < halfLen; k++) { nextSingleLayer[startIdx + k] = singleLayer[startIdx + 2 * k] ^ singleLayer[startIdx + 2 * k + 1]; nextSingleLayer[startIdx + halfLen + k] = singleLayer[startIdx + 2 * k + 1]; } startIdx += len;//进行分段 } tmpPtr = singleLayer; singleLayer = nextSingleLayer; nextSingleLayer = tmpPtr; } for (i = 0; i < nodeLen; i++) { smallSrcVec[i] = singleLayer[i]; } }这段c语言代码编码举例
时间: 2023-02-07 13:16:27 浏览: 78
这是一个随机编码算法,用于通过一个指定的数组 u 来求出另一个数组 x。它包含了四个参数:
- psArray:指向一个 UINT32 类型的数组,用于存储最终的编码结果。
- smallSrcVec:指向一个 UINT32 类型的数组,包含了随机编码所需的数据。
- nodeLen:UINT32 类型的变量,表示 smallSrcVec 数组的长度。
- layerNum:UINT32 类型的变量,表示需要进行几层随机编码。
为什么要把 layerNum 作为一个参数而不是从 psArray 的数目直接得到呢?这是因为得到 psArray 数组中元素的数目有些困难。因此,为了更加方便,直接将 layerNum 作为一个参数传入函数中。
阅读全文