有没有C程序大神能帮我把这段C++代码翻译成C语言的,感激不尽!!!
解决时间 2021-03-16 22:52
- 提问者网友:棒棒糖
- 2021-03-16 13:53
#include // 用于文件操作
#include // 用于程序流程控制
void checkCRC(int &chCurrByte, int chNextByte)
{
// CRC循环:每次调用进行8次循环,处理一个字节的数据。
for (int nMask = 0x80; nMask > 0; nMask >>= 1)
{
if ((chCurrByte & 0x80) != 0) // 首位为1:移位,并进行异或运算
{
chCurrByte <<= 1; // 移一位
if ( (chNextByte & nMask) != 0) // 补一位
{
chCurrByte |= 1;
}
chCurrByte ^= 7; // 首位已经移出,仅对低8位进行异或运算,7的二进制为0000,0111
}
else // 首位为0,只移位,不进行异或运算
{
chCurrByte <<= 1; // 移一位
if ( (chNextByte & nMask) != 0) // 补一位
{
chCurrByte |= 1;
}
}
}
}
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-03-16 14:39
由于C中没有引用 所以计算得到的值必须通过返回值传回 调用上也就会有区别
int checkCRC(int chCurrByte, int chNextByte)
{
// CRC循环:每次调用进行8次循环,处理一个字节的数据。
for (int nMask = 0x80; nMask > 0; nMask >>= 1)
{
if ((chCurrByte & 0x80) != 0) // 首位为1:移位,并进行异或运算
{
chCurrByte <<= 1; // 移一位
if ( (chNextByte & nMask) != 0) // 补一位
{
chCurrByte |= 1;
}
chCurrByte ^= 7; // 首位已经移出,仅对低8位进行异或运算,7的二进制为0000,0111
}
else // 首位为0,只移位,不进行异或运算
{
chCurrByte <<= 1; // 移一位
if ( (chNextByte & nMask) != 0) // 补一位
{
chCurrByte |= 1;
}
}
}
return chCurrByte ;
}int a,b;
C++调用的时候
checkCRC(a,b);就可以了
C的时候必须
a=checkCRC(a,b);
全部回答
- 1楼网友:摆渡翁
- 2021-03-16 16:53
代码没贴~~
- 2楼网友:一袍清酒付
- 2021-03-16 16:04
:~/wenjian/bowl$ gcc -s tie.c -o tie.s :~/wenjian/bowl$ vim tie.s :~/wenjian/bowl$ cat tie.c tie.s #include <stdio.h> int main(void) { int n; int sum=0; do{ printf("please enter an integer:\n"); scanf("%d",&n); sum=sum+n; printf("the sum is %d\n\n",sum); }while(n!=0); return 0; } .file "tie.c" .section .rodata .lc0: .string "please enter an integer:" .lc1: .string "%d" .lc2: .string "the sum is %d\n\n" .text .globl main .type main, @function main: .lfb0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $32, %esp movl $0, 28(%esp) .l2: movl $.lc0, (%esp) call puts leal 24(%esp), %eax movl %eax, 4(%esp) movl $.lc1, (%esp) call __isoc99_scanf movl 24(%esp), %eax addl %eax, 28(%esp) movl 28(%esp), %eax movl %eax, 4(%esp) movl $.lc2, (%esp) call printf movl 24(%esp), %eax testl %eax, %eax jne .l2 movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .lfe0: .size main, .-main .ident "gcc: (ubuntu 4.8.2-19ubuntu1) 4.8.2" .section .note.gnu-stack,"",@progbits
- 3楼网友:零点过十分
- 2021-03-16 14:50
c和c+的本质区别,也就是加入了类,然后换了些函数,比如输入输出以及其他的函数
像你这个,基本语法都没有c++独特的成分
所以这个不需要改吧
我要举报
大家都在看
推荐资讯