WORD(BYTE(pBuf[nPos]));

embed_rookie 2012-10-23 03:10:42
这句话什么什么意思?

WORD CRC16_LH(unsigned char* pBuf,int nLength)
{
WORD nCRC = 0x0000;
WORD ch;
WORD tmp;
int nIndex;
int nPos=0;
while(nLength>0)
{
nLength -= 1;
ch = WORD(BYTE(pBuf[nPos]));
nPos += 1;
for(nIndex = 0;nIndex<=7;nIndex++)
{ tmp = nCRC & 0x8000;
nCRC <<= 1;
if(ch & 0x80)
nCRC += 1;
if(tmp)
nCRC = nCRC ^ 0x1021;
ch <<= 1;
}
}
return nCRC;
}


我想把这代码转换成c语言的该怎么转?
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

从你的代码看,
WORD(BYTE(pBuf[nPos]));
这个根本就没有特殊的意思.

typedef unsigned short WORD;
typedef unsigned char BYTE;

4楼说的这个已经很明显了. 那一堆强制转换就没什么意思义
[/Quote]

诶,别误解我的意思呀,我可没说强转没意义呀!!!!!
BYTE 是为了取8位数据,然后用WORD强转扩充为一个WORD,前面补上8个0位。
你用WORD(pBuf[nPos])可是从pBuf中读取16位数据出来。
这两个意思完全是不同的呀。。。
cbzjzsb123 2012-10-23
  • 打赏
  • 举报
回复
typedef unsigned short WORD;
typedef unsigned char BYTE;

4楼说的这个已经很明显了. 那一堆强制转换就没什么意思义
xiaohuh421 2012-10-23
  • 打赏
  • 举报
回复
从你的代码看,
WORD(BYTE(pBuf[nPos]));
这个根本就没有特殊的意思.

typedef unsigned short WORD;
typedef unsigned char BYTE;

4楼说的这个已经很明显了. 那一堆强制转换就没什么意思义
Eleven 2012-10-23
  • 打赏
  • 举报
回复
WORD(BYTE(pBuf[nPos]));
强制转换
「已注销」 2012-10-23
  • 打赏
  • 举报
回复
typedef unsigned short WORD;
typedef unsigned char BYTE;
「已注销」 2012-10-23
  • 打赏
  • 举报
回复
这不就是C语言的么,你要转什么啊,毛线
include windows.h直接能运行
embed_rookie 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你这段代码是Java?
[/Quote]
不知道是什么语言的,客户给的一个算法 需要把这个算法转换成c语言的
healer_kx 2012-10-23
  • 打赏
  • 举报
回复
你这段代码是Java?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧