gpt4 book ai didi

c++ - 将 m 字节的数组拆分为 n 字节的 block

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:39 24 4
gpt4 key购买 nike

我正在开发一个处理大脑数据的程序。它接收一个值,该值表示 8 种公认的 EEG(脑电波)类型的当前幅度。此数据值以小端格式输出为一系列八个 3 字节无符号整数。

这是我的一段代码:

    if (extendedCodeLevel == 0 && code == ASIC_EEG_POWER_CODE)     
{
fprintf(arq4, "EXCODE level: %d CODE: 0x%02X vLength: %d\n", extendedCodeLevel, code, valueLength );
fprintf(arq4, "Data value(s):" );
for( i=0; i<valueLength; i++ ) fprintf(arq4, " %d", value[0] & 0xFF );
}

value[0] 是我的输出。它是代表脑电波的一系列字节。当前输出文件包含以下数据:

EXCODE level: 0x00  CODE: 0x83 vLength: 24
Data value(s): 16 2 17 5 3 2 22 1 2 1 0 0 0 4 0 0 3 0 0 5 1 0 4 8

我需要的是将上面的字节序列分成 3 个字节的 block ,以识别 EEG。 wave delta 由第一个 3 字节序列表示,theta 由接下来的字节表示,依此类推。我该怎么做?

最佳答案

假设您知道您的输入始终恰好是八个三位整数,您所需要的只是一个简单的循环,从输入中读取三个字节并将它们写出为一个四字节的值。最简单的方法是将输入视为一个字节数组,然后以三个为一组从该数组中提取字节。

// Convert an array of eight 3-byte integers into an array
// of eight 4-byte integers.
void convert_3to4(const void* input, void* output)
{
uint32_t tmp;
uint32_t* pOut = output;
uint8_t* pIn = input;
int i;

for (i=0; i<24; i+=3)
{
tmp = pIn[i];
tmp += (pIn[i+1] << 8);
tmp += (pIn[i+2] << 16);
pOut[((i+2) / 3)] = tmp;
}
}

关于c++ - 将 m 字节的数组拆分为 n 字节的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com