我正在尝试使用C#生成CRC-16。我用于RS232的硬件要求输入字符串为十六进制。下面的屏幕截图显示了正确的转换,对于测试,我需要8000为0xC061,但是生成CRC-16的C#方法必须能够转换任何给定的HEX字符串。我试过使用Nito.KitchenSink.CRC我还尝试了下面的方法,当输入8000时生成8009-publicstringCalcCRC16(stringstrInput){ushortcrc=0x0000;byte[]data=GetBytesFromHexString(strInput);for(inti=0;i0)crc=(ushort)((crc
我正在尝试将串行端口设备集成到我的应用程序中,它需要对我发送给它的字节进行CRC-CCTT验证。我对管理字节数据包有点陌生,需要帮助。它使用此公式进行CRC演算:[CRC-CCITTP(X)=X16+C12+C8+1]例如,对于数据包:0xFC0x050x11,CRC为0x5627。然后我将这个数据包发送到设备:0xFC0x050x110x270x56此外,数据包长度将从5到255不等(包括CRC校验字节)我不知道如何实现这个,所以欢迎任何想法/建议。希望我说清楚了,提前致谢。编辑:这是我需要做的规范: 最佳答案 标准的crc-cc
我使用这个简单的函数来计算给定文件的CRC校验和:longi,j=0;intk=0;uintcrc=0xFFFFFFFF;FileInfofile_info=newFileInfo(file);byte[]file_buffer=newbyte[32768];FileStreamfile_stream=newFileStream(@file,FileMode.Open);while((i=file_stream.Read(file_buffer,0,file_buffer.Count()))>0){for(j=0;j>8)&0x00FFFFFFL)^crc32_table[k];crc
我正在尝试将这段在循环中使用按位运算符的代码从JavaScript翻译成PHP。这是JavaScript代码:for(vark=0,iTop=str.length;k>8)^("0x"+table.substr(((crc^str.charCodeAt(k))&0x000000FF)*9,8));document.write(crc);}这是翻译成PHP的相同代码for($k=0,$iTop=strlen($str);$k>8)^("0x".substr($table,(($crc^ord($str[$k]))&0x000000FF)*9,8));echo$crc;}这两个段为crc变
我试图转换定义为C/C++宏的CRC32算法unsignedlongsctp_crc_c[256]={0x00000000L,0xF26B8303L,0xE13B70F7L,0x1350F3F4L,0xC79A971FL,0x35F1141CL,0x26A1E7E8L,0xD4CA64EBL,0x8AD958CFL,0x78B2DBCCL,0x6BE22838L,0x9989AB3BL,0x4D43CFD0L,0xBF284CD3L,0xAC78BF27L,0x5E133C24L,0x105EC76FL,0xE235446CL,0xF165B798L,0x030E349BL,0xD7C
目录1、引言2、计算步骤3、代码的实现(计算法)4、代码的实现(查表法)5、在线CRC校验网址(1)链接(2)链接1、引言(1).CRC寄存器初始值为0xFFFF;即16个字节全为1。(2).CRC-16/ModBus的模型为:X16+X15+X2+1,由于16进制数只能0~15位,所以舍去X16位,最后得出:0x8005H(1000000000000101B)。(3).通过把0x8005H的“高位”与“低位”进行互换,得到最终的多项式:0xA001H(1010000000000001B)。2、计算步骤(1).预置16位寄存器为十六进制0xFFFF(即全为1),称此寄存器为CRC寄存器;(2)
我一直在尝试从PHP获取crc32函数以匹配javascript生成的结果。我浏览了在网上找到的4个不同的javascriptcrc32库(1、2、3、4),它们都适用于ascii,但是当你向它抛出utf8字符时,所有四个js库都输出相同的错误答案。Thisoldstackoverflowquestion似乎是最接近的答案,但在我的测试中仍然不起作用。例如:php:crc32('tést')=727386373javascript:crc32.genBytes('tést')=3109344618为方便起见,这里是最紧凑的版本。functionstringToBytes(str){va
我正在尝试使用PHPCRC16CCITT函数来计算校验和。一个设备向我发送一个包含校验和的数据包:100000000000000012510908001800040214000c000c021c0002000000000000a077校验和在最后:a077我试过Howtocalculatecrc16inphpConvertCtoPHPforCRC16Function没有成功,CRC16计算返回:E6F4而不是a077当我查找时,我返回了正确的十六进制信息:100000000000000012510908001800040214000c000c021c0002000000000000在网
我需要帮助将C代码转换为PHP。以下是C代码:staticconstU16crctab16[]={0x0000,0x1189,...};U16GetCrc16(constU8*pData,intnLength){U16fcs=0xffff;while(nLength>0){fcs=(fcs>>8)^crctab16[fcs^*pData)&0xff];nLength--;pData++;}return~fcs;}到目前为止,我已经成功转换了以下PHP代码:$crctab16=array(0x0000,0x1189,...);functiongetCrc16($pData){$hexda
PHP的crc32支持字符串作为输入。对于文件,下面的代码将适用于OFC。crc32(file_get_contents("myfile.CSV"));但是如果文件变大(2GB),它可能会引发内存不足的fatalerror。那么有什么办法可以找到大文件的校验和吗? 最佳答案 PHP不支持大于2GB的文件(32位限制)以及从文件计算crc32的更有效方法:$hash=hash_file('crc32b',"myfile.CSV"); 关于php-如何找到大文件的crc32?,我们在Stac