gpt4 book ai didi

c++ - 尽快将数据打包到数组中

转载 作者:太空狗 更新时间:2023-10-29 21:07:46 25 4
gpt4 key购买 nike

我从一个 100,000 字节的数组开始,其中每个字节中只有低 6 位有有用的数据。我需要尽快将该数据打包到一个 75,000 字节的数组中,同时保持数据的顺序。

unsigned int Joinbits(unsigned int in) {}

最佳答案

// 00111111 00111111 00111111 00111111
// 000000 001111 111122 222222
void pack6(
register unsigned char o,
register unsigned char const *i,
unsigned char const *end
)
{
while(i!=end)
{
*o++ = *i << 2u | *(i+1) >> 4u; ++i;
*o++ = (*i & 0xfu) << 4u | *(i+1) >> 2u; ++i;
*o++ = (*i & 0xfcu) << 6u | *(i+1) ; i+=2;
}
}

如果输入长度不能被 4 整除,将失败。假设输入的高 2 位为零。完全便携。读取 4 个输入字节 6 次,因此读取效率低 50%,但是处理器缓存和编译器优化器可能会有所帮助。尝试使用变量来保存读数可能会适得其反,只有实际测量才能证明。

关于c++ - 尽快将数据打包到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4424825/

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