根据代码,我猜BYTEWORD是无符号短和两个字节结构的联合,因此作者可以轻松访问这个短的高低字节,即:
typedef union BYTEWORD { short w; struct { char lo, hi; } b; } BYTEWORD;
由于Java不支持工会(和在讨论中提到,有与上述端漏洞),你将不得不使用>>
,|
而&
运营商获得短期的高和低8位:
short retval_w = -1; ... retval_w = ((retval_w>>8)&0xff) ^ (ccittrev_tbl[(retval_w&0xff) ^ (data[i]&0xff)]);