gpt4 book ai didi

c - 使用 64 位无符号变量中的不同值更新每个 block (4 位)?

转载 作者:行者123 更新时间:2023-11-30 19:57:57 24 4
gpt4 key购买 nike

我有一个变量unsigned __int64 text=0x0;,我需要用不同的值更新每4位。

文本 = b64b63...b3b2b1b0我有一个循环,循环内部必须是这样的:

for(i=0;i<16;i++)
{
b3b2b1b0=a[0]
b7b6b5b4=a[1]
b11b10b9b8=a[2]
..
..
..
}

我尝试过这个,但没有成功

unsigned __int64 temp=0x0;
unsigned __int64 index=0x0;
for(i=0;i<16;i++)
{
index = (text>>(i*4))&0x0F;
temp = a[index];
text = text | temp<<(i*4);
}

非常感谢

最佳答案

您可以使用位移位和按位或来执行此操作。假设 a[n] 值均在 0 到 15 之间,并且也是 unsigned __int64s:

unsigned __int64 text=0x0;

text = a[0] |
a[1] << 4 |
a[2] << 8 |
etc....;

如果您不信任 a[n] 值,请在移位前使用 (a[n] & 0xF) 清除除四个最低有效位之外的所有位。如果a[n]不是unsigned __int64,则在移位之前对其进行转换。

关于c - 使用 64 位无符号变量中的不同值更新每个 block (4 位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894978/

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