我是perl新手,我想知道为什么没有正确地将参数传递给子例程。另外,输出值是否正确?
use strict;
sub crc16 {
use constant POLY => $_[1];
my $crc = 0;
for my $c ( unpack 'C*', $_[0] ) {
$crc ^= $c;
for my $b ( 0 .. 7 ) {
my $carry = $crc & 1;
$crc >>= 1;
一开始,我必须说,我对mips汇编语言和Stackoverflow都是新手。
我有mips汇编语言的工作代码,这是计算CRC32与给定的文本文件的查找表,我想改变它来计算CRC16和CRC8。
我几乎可以肯定所有情况下的查找表都是正确生成的:CRC32、CRC16和CRC8。我知道我应该更改CRC16的初始值,例如0xffff,但这还不够。我认为问题是在改变这个值之后,这个算法从查找表中提取了错误的索引,我说的对吗?
提前感谢您的帮助。
##### This subroutine first generates 256 words crc32 table for ASCII codes and
我试着用ise14.4在vhdl上编写crc16计算程序,但不明白为什么会有“解析错误,意外的错误”。试着把它放到过程中,但它也不起作用。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity crc16 is port(
clk : in STD_LOGIC:='0');
end crc16;
architecture Behavioral of crc16 is
signal data:std_logic_vector(15 downto 0):="1010101010101010";
signal ext
在上,有一个CCITT 16的实现。对于那些避免链接的人,它用C写成,如下所示:
unsigned short crc16(data_p, length)
char *data_p;
unsigned short length;
{
unsigned char i;
unsigned int data;
unsigned int crc;
crc = 0xffff;
if (length == 0)
return (~crc);
do {
for (
我正在编写代码,根据传入的多项式和包含"crc8“、"crc16”或"crc32“的字符串s来实例化CRC算法。
类CRC8、CRC16和CRC32都扩展了类CRC并实现了接口HashAlgorithm。它们中的每一个都有一个构造函数CRCx(int polynomial)。
我的问题是,我在所有3个getConstructor()行上都得到了这个错误:
Type mismatch:
cannot convert from Constructor<HashFactory.CRC16>
to Constructor<HashFactory.C
我目前正在编写一个CRC16程序,它使用CRC16多项式X^16 + X^15 + X^2 + 1计算字符的CRC。程序应从标准输入读取数据,并以十六进制输出16位CRC。尽管如此,当我执行程序时,我得到了错误的输出值。
下面是我的代码:
#include <stdint.h>
#define CRC16 0x8005
unsigned short crc(unsigned char msg[], int len)
{
unsigned short out = 0;
int bits = 0, t_flag;
int x = 0;
/* San
我很难将一些C代码转换为Kotlin/Java。C代码是正确的。问题是,Kotlin代码导致了一个不同的CRC16校验和。
这是C代码:
// data_buf is of type uint8_t
uint16_t crc = 0;
for(uint32_t i = 0; i<BUF_SIZE; i++)
{
crc += data_buf[i];
}
这就是我在Kotlin尝试过的,但它不起作用:
// DFUFile is of type ByteArray
var i = 0
var crc: UShort = 0u
while(i < DFUFile.size)
我找到了这段用于CRC16的C#代码,但我需要在F#上使用它:
使用系统;
public class Crc16 {
const ushort polynomial = 0xA001;
ushort[] table = new ushort[256];
public ushort ComputeChecksum(byte[] bytes) {
ushort crc = 0;
for(int i = 0; i < bytes.Length; ++i) {
byte index = (byte)(crc ^ b