gpt4 book ai didi

c - 根据另一个数组中设置的值打印一个数组的元素

转载 作者:行者123 更新时间:2023-11-30 20:38:00 25 4
gpt4 key购买 nike

我有两个数组,一个是 data[n] 数组,它是 int 类型并存储随机值。另一种是 result[n/4] 数组,它在一个元素中包含有关 'data' 数组的 4 个整数的详细信息。

例如:result[0]=1000 0000 1000 0000 0000 0000 1000 0000 表示需要打印出data[0], data[1], data[3]。类似地,结果[1]的每个字节中都有有关数据[4]到数据[7]的详细信息,因此如果数据数组中存在“n”个元素,则结果数组中存在n/4个元素。

现在我提供了结果和数据数组以及计数值(结果数组中的元素数量),并且我必须打印设置了“结果”值的那些“数据”值(即“1000 0000”) ')。我尝试过两种方法。

方法一:

i=0;j=0;
while(i<count)
{
if((result[i]>>24 & 0xff) > 0) printf("%d",data[j]);
if((result[i]>>16 & 0xff) > 0) printf("%d",data[j+1]);
if((result[i]>>8 & 0xff) > 0) printf("%d",data[j+2]);
if((result[i]>>0 & 0xff) > 0) printf("%d",data[j+3]);
i++;
j+=4;
}

方法2:

while(i<count){
if((res[i] & 0x80000000)==0x80000000) printf("%d\n",dat[x]);
if((res[i] & 0x00800000)==0x00800000) printf("%d\n",dat[x+1]);
if((res[i] & 0x00008000)==0x80008000) printf("%d\n",dat[x+2]);
if((res[i] & 0x80000080)==0x80000080) printf("%d\n",dat[x+3]);
i++;
x+=4;
}

我对第一种方法的性能不满意,因此从我的代码中删除了移位运算符并转到第二种方法。速度有了相当大的提高,但是这种提高的速度对于我的应用程序来说还不够。建议任何其他技术来比上述两种方法更快地解决我的问题。

最佳答案

你的瓶颈是 printf() 函数调用 - 首先构建一个新字符串,然后在检查后打印它 - 每 4 字节检查一次 printf() 调用是一种改进。您可以通过仅在结果末尾或每个整行(控制台窗口)打印 if 来更多地减少 printf() 调用。

希望这有帮助,谢谢 - 尼尔

关于c - 根据另一个数组中设置的值打印一个数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052783/

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