gpt4 book ai didi

c - 在 C 中采用 long 值并以相反顺序返回其字节的函数

转载 作者:太空狗 更新时间:2023-10-29 16:08:16 24 4
gpt4 key购买 nike

我正在做一个作业,要求我编写一个函数,该函数接受一个 long 值并在 C 中以相反的顺序返回其字节,给出了该函数的原型(prototype),即

long swapLong(long x)

我的代码是这样的:

long swapLong(long in)
{
long out;
char *inp = (char *) &in ;
char *outp = (char *) &out;

int i=0;
for (i=0; i<8 ;i++)
{
outp[i] = inp[7-i];
}

return out;
}

如果函数的输入是0x1122334455667788

它应该返回 0x8877665544332211

然而,当我用

测试它时
long test2 = 0x1122334455667788;
long result2= swapLong(test2);
printf("0x %lx\n", test2);
printf("0x %lx\n", result2);

结果是0x44332211

好像这个函数只交换输入的前半部分,我不知道后半部分会发生什么

我已经编写了另一个名为“int swapInt( int x) ”的函数,使用与 swapLong() 类似的想法并且效果很好......所以我不知道我对 swapLong() 做错了什么

最佳答案

您可能喜欢使用 sizeof(long) 而不是 8

...
size_t i;
size_t sizeLong = sizeof(long);
for (i=0; i<sizeLong ;i++)
{
outp[i] = inp[sizeLong-i-1];
}
...

关于c - 在 C 中采用 long 值并以相反顺序返回其字节的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434049/

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