精华内容
下载资源
问答
  • IP数据检验和计算

    千次阅读 多人点赞 2019-11-04 14:20:42
    在进行计算之前先补充一下基础知识。 一、原码,反码补码 原码 原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。...

    在进行计算之前先补充一下基础知识。

    一、原码,反码和补码

    原码

    原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。
    举例: 以8位机器数为例,整数的“+0”原码为0,0000000;整数的“-0”原码为1,0000000;小数的“+0”原码为0.0000000,小数的“-0”原码为1.0000000

    反码

    正数的反码就等于原码,负数的反码相当于除了符号位之外,其他位取反。
    举例: 整数的“+0”反码为0,0000000;整数的“-0”原码为1,1111111;小数的“+0”原码为0.0000000,小数的“-0”原码为1.1111111

    补码

    正整数的补码是其二进制表示,与原码相同;
    负整数的补码为反码加1;
    举例: +1的补码为0,0000001;
    -1的补码为1,111 1111

    二、IP数据报中,首部检验和计算方法

    这个字段用来检验数据报的首部,不包括数据部分。数据报每经过一个路由器,路由器都要重新计算首部检验和。不检验数据部分可以减小计算量。
    计算方法: 先把IP数据报首部化为许多16位的序列,并把检验和字段置零。用反码运算把所有16字相加后,将得到的和的反码写入检验和字段。接收方收到数据后,将首部的所有16位子序列再使用反码算术符相加一次,将得到的和取反码。如果首部未发生任何变化,那么这个和肯定为0。否则认为出差错,并将此数据报丢弃。

    反码相加:从低位向高位计算,0 0 得0 ,0 1 得1 ,1 1 得0 进1,如果最高位相加后产生进位,最后得到的结果加1。

    例题:设IP数据报使用固定首部,其个字段的数值如图。计算下列IP数据报首部的检验和,各字段的数值如图
    在这里插入图片描述
    4 5 0 —>01000101 00000000
    28 —>00000000 00011100
    1 —>00000000 00000001
    00 —>00000000 00000000
    4 17 —>00000100 00010001
    10.12.14.5 —>00001010 00001100 00001100 00000110
    12.6.7.9 —> 00001110 00000101 0000111 00001001
    反码运算:
    01110100 01001110
    取反,得到检验和字段:
    10001011 10110001

    使用16进制算法(每16位二进制数字,转换为4个十六进制数字表示)
    4 5 0 —>4500
    28 ---->001C
    1 --------->0001
    0 0 —>0000
    4 17 ---->0411
    10.12.14.5 —> 0A0C 0E05
    12.6.7.9 -->0C06 0709
    加法结果:744E
    反码:8BB1

    展开全文
  • 文章主要介绍了IP数据首部检验和它的计算过程
  • IPV4数据报的首部长度为5,数据总长度为80字节,数据报的标识为1,未分片, TTL值为4,封装的是TCP数据,源地址目的地址分别是192.168.20.86192.168.21.20, 请对IP数据报进行首部校验。
  • 检验和计算——C语言

    千次阅读 2019-12-09 23:15:00
    检验和计算都是一个模板,只是各种检验和的初始数据不一样 总结一下就是:求和、回卷、取反 把校验字段设置为0。 求和:把需要校验的数据看成以16位为单位的数字组成,依次进行二进制求和。 回卷:求和后...

    一、计算检验和的步骤

    检验和的计算都是一个模板,只是各种检验和的初始数据不一样
    总结一下就是:求和、回卷、取反

    1. 把校验和字段设置为0。
    2. 求和:把需要校验的数据看成以16位为单位的数字组成,依次进行二进制求和。
    3. 回卷:求和后超过16位的加到低16位。
    4. 取反:最后结果取反码就是检验和。

    (1)可以每两个求和后回卷,再求和,在回卷,直到全部求和,然后取反
    (2)也可以全部求和,然后一直回卷直到高 16 位全部为 0,然后取反
    一般采用第二种

    另外UDP、TCP数据报的长度可以为奇数字节,因为计算时是16位为单位,所以此时计算校验和时需要在最后一个填充字节0(只是计算校验和用,不发送出去)。

    二、接收端校验校验和步骤

    把需要校验的内容(包括校验和字段)看成以16位为单位的数字,依次进行二进制反码求和,如果结果是0表示正确,否则表示错误。

    三、说明

    校验和覆盖的内容:

    1. IP首部校验和:IP首部
    2. ICMP校验和:ICMP首部+ICMP数据
    3. UDP、TCP校验和:首部+数据+12个字节伪首部(源IP地址、目的IP地址、协议、TCP/UDP包长)

    四、IP首部校验和

    1、结构图如下
    在这里插入图片描述

    2、详细计算过程
    为了不出问题,按照报文格式依次编写数据即可
    版本和首部长度放在一起

    • 版本:4
    • 首部长度:20字节 ==》 5
    • 总长度:46(首部 + 数据)
    • 标识:
    • 标志:是否分片,3 bit(不分片——010)
      (1) 一个比特保留为以后用;
      (2)第二个比特是DF(Don’t Fragment):“不分片”比特,若为1,IP将不对数据报进行分片,若无法将此数据报通过任何可用网络转发,则丢弃,并发送一个ICMP差错报文给起始端,若为0, 则在需要时将数据报分片;
      (3)第三个比特是MF(More Fragment):“更多分片”比特,为1,表示后面还有更多的分片,为0,则表示是最后的分片。
    • 偏移:偏移量,13 bit
    • 生存时间:64
    • 协议:17(UDP)
    • 检验和:置0
    • 源IP地址:192.168.1.81
    • 目的IP地址:192.168.1.166

    然后把这些数据全部二进制相加求和,回卷,取反。得到校验和:0xa443

    不分片
    在这里插入图片描述
    在这里插入图片描述

    五、UDP校验和

    1、结构图如下
    在这里插入图片描述

    2、详细计算过程
    为了不出问题,按照报文格式依次编写数据即可

    • 源IP地址:192.168.1.81
    • 目的IP地址:192.168.1.166
    • 上层协议类型:17(UDP)
    • UDP长度:26(首部 + 数据)
    • 源端口:6081
    • 目的端口:7081
    • UDP长度:26(首部 + 数据)
    • 检验和:置0
    • 数据:81(18个,只是为了凑齐最小帧64字节)

    然后把这些数据全部二进制相加求和,回卷,取反。得到校验和:0x6c2c
    在这里插入图片描述
    在这里插入图片描述

    六、代码及解释(代码一样,只是初始数据不一样)

    1、检验和是16 bit 的
    2、

    • 数据有的是 8 位:所以两个一组,高位(在前面)左移8位(后面补0)变16 位,在后面 8 位加上低位,就组成了 16 bit
    • 数据有的是 16 位:直接相加

    3、因为求和会溢出,所以声明一个 32 bit 来存放和,回卷就直接把高 16 位,加到低 16 位,直到高 16 位就变成 0,然后再强转格式即可。
    4、最后要声明的是数据的个数

    • 偶数:直接相加
    • 奇数:最后一位左移 8 位
    #include <stdio.h>
    #include <malloc.h>
    
    typedef unsigned char			uint8_t;	// 8  比特 
    typedef unsigned short          uint16_t;	// 16 比特
    typedef unsigned int            uint32_t;	// 32 比特
    typedef unsigned long           uint64_t;	// 64 比特
    
    //单个数据是:8 bit数据 ipv4 
    uint8_t ipv4_8[] = {
    	0x45,									//版本号 4,首部长度 20 字节 ==> 5
    	0x00,									//服务类型,默认
    	0x00, 0x2e,								//总长度(首部 + 数据)
    	0x12, 0x34, 							//16 标识位 
    	0x40, 0x00,								//3 比特标志不分片010 ,13 比特片偏移 
    	0x40,									//生存时间 64
    	0x11,									//上层协议,以 UDP 为例 17
    	0x00, 0x00,								//首部校验和
    	0xc0, 0xa8, 0x01, 0x51,					//源 IP 地址		192.168.1.81 
    	0xc0, 0xa8, 0x01, 0xa6,					//目的地 IP 地址 	192.168.1.166
    };
    //单个数据是:8 bit数据 udp
    uint8_t udp_8[] = {
    	0xc0, 0xa8, 0x01, 0x51,					//源 IP 地址		192.168.1.81 
    	0xc0, 0xa8, 0x01, 0xa6,					//目的地 IP 地址 	192.168.1.166
    	0x00, 0x11,								//协议类型 UDP = 17 
    	0x00, 0x1a,								//UDP 长度(首部 + 数据)
    
    	0x17, 0xc1,								//源端口 
    	0x1b, 0xa9,								//目的地端口 
    	0x00, 0x1a,								//UDP 长度 
    	0x00, 0x00,								//检验和置 0 
    
    	0x51, 0x51, 0x51, 0x51, 0x51, 0x51,		//数据 18 字节 
    	0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
    	0x51, 0x51, 0x51, 0x51, 0x51, 0x51
    };
    //单个数据是:16 bit数据 ipv4 
    uint16_t ipv4_16[] = {
    	0x4500,	0x002e,
    	0x1234, 0x4000,
    	0x4011,	0x0000,
    	0xc0a8, 0x0151,
    	0xc0a8, 0x01a6,
    };
    //单个数据是:16 bit数据 udp 
    uint16_t udp_16[] = {
    	0xc0a8, 0x0151, 0xc0a8, 0x01a6,
    	0x0011,	0x001a,	0x17c1,	0x1ba9,
    	0x001a,	0x0000,	0x5151, 0x5151,
    	0x5151,	0x5151, 0x5151, 0x5151,
    	0x5151, 0x5151, 0x5151
    };
    
    uint16_t CheckSum_8(uint8_t array[], int len) {
    	uint32_t sum = 0; 							    //32 比特,存放和 
    	int i;
    	for (i = 0; i < len - 1; i = i + 2) {           //高字节和低字节
    		sum += ((uint16_t)array[i] << 8) + ((uint16_t)array[i + 1]);	//每 16 比特相加
    	}
    	
    	if (i + 1 == len) {                             //如果位奇数,多出来的扩充字节至16 
    		sum += (uint16_t)array[i] << 8;
    	}
    	
    	while (sum >> 16) {								//直到高 16 比特全为 0,检验和在低 16 比特(一般一次就行了) 
    		sum = (sum >> 16) + (sum & 0xffff);			//回卷 
    	}
    	sum += (sum >> 16);
    	return (uint16_t)(~sum);					    //强制转换结果取反 
    }
    
    uint16_t CheckSum_16(uint16_t array[], int len) {
    	uint32_t sum = 0;
    	for (int i = 0; i < len - 1; i++) {				//16 比特直接相加(除最后一个)
    		sum += array[i];
    	}
    	
    	if (array[len - 1] >> 8) {						//判断最后一个是 0x00 还是 0x0000
    		sum += array[len - 1];						//如果是 0x0000,直接加
    	}
    	else {
    		sum += array[len - 1] << 8;					//如果是 0x00,移到高位相加
    	}
    	
    	while (sum >> 16) {								//直到高 16 比特全为 0,检验和在低 16 比特(一般一次就行了) 
    		sum = (sum >> 16) + (sum & 0xffff);			//回卷 
    	}
    	sum += (sum >> 16);
    	return (uint16_t)(~sum);					    //强制转换结果取反 
    }
    
    int main() {
    	int udp_len_8 = sizeof(udp_8) / sizeof(udp_8[0]);
    	unsigned short check1 = CheckSum_8(udp_8, udp_len_8);
    	printf("udp_8  检验和为:%x\n", check1);
    
    	int udp_len_16 = sizeof(udp_16) / sizeof(udp_16[0]);
    	unsigned short check2 = CheckSum_16(udp_16, udp_len_16);
    	printf("udp_16 检验和为:%x\n", check2);
    
    	int ipv4_len_8 = sizeof(ipv4_8) / sizeof(ipv4_8[0]);
    	unsigned short check3 = CheckSum_8(ipv4_8, ipv4_len_8);
    	printf("ipv4_8 检验和为:%x\n", check3);
    
    	int ipv4_len_16 = sizeof(ipv4_16) / sizeof(ipv4_16[0]);
    	unsigned short check4 = CheckSum_16(ipv4_16, ipv4_len_16);
    	printf("ipv4_16检验和为:%x\n", check4);
    
    	return 0;
    }
    

    在这里插入图片描述

    七、wireshark抓包查看

    待验证

    八、其它

    原码、补码、反码
    正整数部分:
    (1)原码、反码和补码都一样
    负整数部分:
    (1)原码和反码的相互转换:符号位不变,数值位按位取反
    (2)原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1

    九、参考

    1、IP首部校验和结果
    https://wenku.baidu.com/view/c5ad9131581b6bd97f19ea85.html

    IP首部检验和:2f01

    uint8_t data[] = {				
        0x45, 0x00, 0x00, 0x30,		//IP 首部检验和 
        0x4a, 0x3e, 0x40, 0x00,
        0x80, 0x06, 0x00, 0x00,
        0xc0, 0xa8, 0x00, 0x37,
        0xc0, 0xa8, 0x00, 0x01
    };
    

    2、UDP校验和
    https://blog.csdn.net/stone_yu/article/details/81611067

    UDP检验和:285c

    uint8_t data[] = {				
        0x0a,0xaa,0x3b,0xbf,		//UDP 检验和 
        0xd2,0x0e,0x96,0x0d,
        0x00,0x11,
        0x00,0x1c,
        0xd1,0x23,
        0x27,0x42,
        0x00,0x1c,
        0x00,0x00,
        0x6c,0x41,0x56,0x61,
        0x00,0x00,0x0e,0x00,
        0xf8,0xb6,0xd4,0x01,
        0x93,0x13,0x00,0x00,
        0x00,0x00,0x00,0x00
    };
    
    展开全文
  • IP首部检验和详细计算步骤

    千次阅读 2021-06-22 14:25:52
    前段时间在做计算机网络的期末课设,题目就是关于IP首部检验和计算程序实现,要实现这个程序的首要步骤就是要明白计算原理。可是我翻来找去,发现课本上对这部分的描述十分的.......干净利索。 IP首部的检验和不...

    前言

    前段时间自己在做计算机网络的期末课设,题目就是关于IP首部检验和的计算程序的实现,要实现这个程序的首要步骤就是要搞明白相关的计算原理。可是我翻来找去,发现课本上对这部分的描述十分的.......干净利索。

    IP首部的检验和不采用复杂的CRC检验码而采用下面的简单计算方法:

    在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。

    接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。

    若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错。

     说句实话,当时我看完这段话之后,本来只有一个问题在阻碍着我,然后一个问题就变成了很多的问题。

    既然课本看不懂那我就去网上找找,没想到找到的结果也和课本上差不多,基本没啥用。给的例子看着好像很详细,实际上知识点非常的混乱,东说一句,西说一句,在完全不了解原理之前这些东西简直就是天书(至少在当时的我看来是这样的)。不过好在最后还是通过为数不多的高质量文章知道了如何计算IP首部检验和及其具体计算步骤,所以在这做一个详细的计算方法的总结与说明,以尽可能的帮助那些有类似经历的朋友 。

    “什么是IP数据报”,“IP首部检验和是干什么用”,类似的理论叙述就不在这里详细阐述了,直接上方法。

    详细计算步骤

    要计算IP首部检验和,我们得先知道在IP数据报的固定部分里有什么字段(这个不是套话,很重要),以下12个字段是我们待会在计算过程中使用到的数据。

    ①版本(Version)   ②首部长度(Header Length)   ③区分服务(Differentiated Service Field) 

    ④总长度(Total Length)         ⑤标识 (Identification)            ⑥标志 (Flags)

    ⑦片偏移(Fragment Offset)   ⑧生存时间 (Time to Live)     ⑨协议(Protocol)

    ⑩首部检验和(Header CheckSum)        ⑩①源地址(Source Address) 

    ⑩②目的地址 (Destination Address)

    上面这张图是我在WireShark中随机抓取的一个IP数据报的报头部分的数据。

    通过分析这个数据报,结合上面说的12个字段,我们可以得到以下信息:

    (1)版本 = 4            (2)首部长度 = 5     (3)区分服务 = 0x00      (4)总长度 = 40

    (5)标识 = 5386 (0x150a)               (6)标志 = 0x40                 (7)片偏移 = 0

    (8)生存时间 = 128                            (9)协议 = 6                      (10)首部检验和 = 0x72e3

    (11)源地址 = 192.168.1.176            (12)目的地址 = 39.106.137.32

    这里稍微介绍一下“协议”字段,课本上对协议的字段值是这么说明的:

    协议名ICMPIGMPIPTCPEGPIGPUDPIPv6ESPOSPF
    协议字段值12468917415089

     即什么协议就取其对应的值,上面的数据报里的协议是TCP,所以取的值是6。

    在了解了上述知识点后,现在我们可以开始计算了。为了更为直观的说明计算过程,接下来均采用二进制数据作为计算数据。实际上,采用二进制数据进行计算与采用十六进制数据进行计算并无区别,读者可根据自身情况进行选择。 

    将上述11个字段(除了首部检验和)转为二进制这里提一嘴,在实际的程序中,包内的首部检验和是要置零然后要参与计算的,但是因为“将首部检验和置零参与计算”和“将首部检验和排除在外然后计算”,这两者在计算结果上没有任何区别。所以,遵循怎么简单怎么来的原则,在下面的计算步骤中就不再涉及首部检验和,大家心里有个数就好,并进行字段拼接。

    要注意的是,每个拼接的字段长度均为 16 位(拼接规则:每个字段括号内的数字为该字段转为二进制的最长位数,若该字段转为二进制后小于所规定的最长位数,则在该二进制首位添零,直至达到最长位数)。(“+”表示拼接)

    ① 版本(4) + 首部长度(4) + 区分服务(8)

    ② 总长度(16)

    ③ 标识(16)

    ④ 标志(8) + 片偏移(8)

    ⑤ 生存时间(8) + 协议(8)

    ⑥ 源地址第一部分(8) + 源地址第二部分(8)

    ⑦ 源地址第三部分(8) + 源地址第四部分(8)

    ⑧ 目的地址第一部分(8) + 目的地址第二部分(8)

    ⑨ 目的地址第三部分(8) + 目的地址第四部分(8)


    由此,将得到的11个字段通过上述转换,我们可以得到如下数据(“+”表示拼接):

    0100 0101 0000 0000(4 + 5 + 00)

    0000 0000 0010 1000(40)

    0001 0101 0000 1010(5386)

    0100 0000 0000 0000(40 + 0)

    1000 0000 0000 0110(128 + 6)

    1100 0000 1010 1000(192 + 168)

    0000 0001 1011 0000(1 + 176)

    0010 0111 0110 1010(39 + 106)

    1000 1001 0010 0000(137 + 32)

    将这 9 个二进制数据相加,我们可以得到 0010 1000 1101 0001 10100x2 8d1a

    可以看出,累加后的数据发生了进位,即 0b0010(0x0002)部分。

    是否发生了进位可以通过位数进行判断,以二进制为例,从最后一位开始向前数 16 位,超出的位数即进位部分(0010),若该二进制数刚好为16 位,则说明未发生进位。

    若发生了进位情况,只需要将进位部分(0010)与剩余部分(1000 1101 0001 1010)重新累加,直至得到的二进制数据位数等于 16 位,然后对该二进制数据取反码,即可得到首部检验和。此处可以用递归的思想实现,长度 > 16 继续递归,else return 当前计算结果

    0010(进位部分) + 1000 1101 0001 1010(剩余部分) = 1000 1101 0001 1100,此时位数为 16 位,未发生进位,则无需累加。对该二进制取反码,可以得到 0111 0010 1110 00110x72e3,该计算结果与包内IP首部检验和相同,计算完成。 

    结语

    以上就是IP首部检验和的计算步骤,都是较为详尽的步骤。对刚接触该方法的读者来说,个人建议采用二进制的计算模式,二进制在字段拼接上比较直观易懂,能使读者尽快的了解字段拼接规则。但二进制在计算方面较为冗长,容易在累加的过程中出现错误;如果读者对该计算思想有了较为清晰的认识,可以改为采用十六进制数据进行计算,这样在计算方面会比二进制简短不少,同时也不容易出错。

    展开全文
  • 针对样本数据服从均匀分布时,样本中出现异常数据的检验问题,利用假设检验的基本原理方法,在顺序统计量的基础上构造了检验功效较好的检验统计量,研究了均匀分布下的异常数据检验.根据顺序统计量的一些分布性质,推导...
  • 目标检测mAP计算代码

    2019-11-24 20:51:40
    目标检测mAP计算代码,对于VOC数据集,需要有训练好的模型已标注的VOC数据集。。。。。。。。。。。。。
  • IP数据报---首部校验计算方法

    千次阅读 多人点赞 2019-01-01 10:37:58
     当接受到IP数据包时,要检查IP头是否正确,则对IP头进行检验,方法同上:  计算:  4500 + 0031 +89F5 + 0000 + 6E06+DD38 + DEB7 + 455D + C0A8 + 00DC =3 FFFC  0003 + FFFC = FFFF  得到的结果...

    为了方便大家,这里再借用网上的一个例子吧:

      IP头:

      45 00    00 31

      89 F5    00 00

      6E 06    00 00(校验字段)

      DE B7   45 5D       ->    222.183.69.93   (源IP地址)

      C0 A8   00 DC       ->    192.168.0.220  (目的IP地址)

      计算:  

      4500 + 0031 +89F5 + 0000 + 6e06+0000 + DEB7 + 455D + C0A8 + 00DC =3 22C4 (结果大于4bit,继续迭代计算)

      0003 + 22C4 = 22C7 

      ~22C7 = DD38      ->即为应填充的校验和

      当接受到IP数据包时,要检查IP头是否正确,则对IP头进行检验,方法同上:

      计算:

      4500 + 0031 +89F5 + 0000 + 6E06+DD38 + DEB7 + 455D + C0A8 + 00DC =3 FFFC

      0003 + FFFC = FFFF

      得到的结果是全1,正确。

    展开全文
  • 面板数据计算单位根检验,stata操作的代码
  • matlab精度检验代码 ...HFO事件检测链接在一起,目的是使HFO检测更加透明,更强大,并促进与同事协作者的数据和代码共享。 安装 可以使用pipenv在python虚拟环境中完成安装。 该软件包托管在pypi ,可以
  • UDP检验和计算方法

    千次阅读 2019-10-07 10:53:55
    UDP伪首部,12字节,伪首部并不是UDP数据报的真正首部,只是为了计算检验和临时添加在UDP数据报的前面,它既不向下传送也不向上递交,它的仅仅是为了计算检验和而存在的。 UDP首部,8字节、 UDP数据等三部分组成, ...
  • 首先我讲的是校验的方式来进行串口通信数据的校验,这个也是前辈说这个比较简单,先做个这个吧。。。。。。其他的后续补上。 校验值=数据类型+数据长度+数据内容 先说一下大致思路,就是数据包里面有校验值...
  • 计算首部检验和

    千次阅读 多人点赞 2020-06-26 18:50:44
    我们先看一下概念 是 一行 16位 相加 最后取反就是首部检验和了 看一下IP数据报的格式 例题: 0100 0101 0000 0000 // 4 5 ,0 0000 0000 0001 1100 //28 0000 0000 0000 0001 // 1 0000 0000 0000 0000 // 0 ...
  • 数据异常检测方法以及实际应用

    千次阅读 2019-05-28 20:35:17
    关于数据的异常检测,看这一篇就够了 - 携程技术中心的文章 - 知乎 https://zhuanlan.zhihu.com/p/65023844 文章目录前言一、应用场景二、检测方法1、概率统计模型2、机器学习方法3、业务经验,逻辑规则4、判定...
  • 计算机视觉(视频追踪检测分类、监控追踪)常用测试数据集(1)、WallFlower dataset 【链接】: 用于评价背景建模算法的好坏, Ground-truth foreground provided. (2)、Foreground/Background segmentation and...
  • 数据集下载 - ICDAR 2019多语言场景文本检测和识别的强大阅读挑战 在训练数据集下方下载每个任务的相关基础事实。 您可能还想阅读本页末尾的“常见问题解答”部分。 任务1:多脚本文本检测 训练集: 训练集由10...
  • IP数据报首部检验和原理

    千次阅读 2020-10-31 21:09:45
    接收方收到数据后,将首部所有的16位字使用反码算术运算相加一次,将得到的取反码,即得出接收方检验和计算结果。若首部未发生任何变化,该结果为0,于是就保留这个数据报。否则就认为出错,并将此数据报丢弃。 ...
  • 包括:安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类分析。还将介绍改善YOLOv4目标训练性能的技巧。  ...
  • 包括:YOLOv4-tiny的网络结构、安装YOLOv4-tiny、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类分析。     除...
  • 其实机器也会出错 面向错误检验与纠错的数据编码 奇偶检验 海明码 海明码 循环冗余校验码(没讲) Internet Checksum(没讲)
  • udp检验和计算方法

    万次阅读 2014-05-03 15:19:31
    一直都没太搞明白UDP/TCP检验和计算方法,这两天终于琢磨明白了,原来是酱紫滴! 不过计算过程还是非常繁琐的,如果不使用代码实现光靠人工计算估计会让人有点想崩溃滴感觉!(这两天差点没吐血- -!)估计没有...
  • 1、 2组数据非正态一组正态数据进行差异性比较,是用参数检验还是非参数检验? 2、海拔对3个物种的5项指标是否存在显著性差异,之前数据正态时用的是二因素(海拔物种)方差分析,但现在数据为非...
  • 无约束自然场景人脸识别数据集,该数据集由13000多张全世界知名人士互联网自然场景不同朝向、表情光照环境人脸图片组成, 共有5000多人,其中有1680人有2张或2张以上人脸图片。每张人脸图片都有其唯一的姓名...
  • 包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习...
  • Python数据分析基础: 异常值检测和处理

    千次阅读 多人点赞 2020-10-31 22:05:31
    本篇继续分享数据清洗中的另一个常见问题:异常值检测和处理。 1 什么是异常值? 在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预测问题中,模型通常是对整体样本...
  • 数据挖掘

    千次阅读 多人点赞 2019-04-16 16:26:36
    数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。 应用的技术包括:数据库技术、人工智能技术、数理统计、...
  • package xdl.day16; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set;...public class TestNumbelCnki { ... public static void main(String[] args) ... // 检测给定的
  • 目录评价指标代码输出指标COCO数据集VOC数据集test.py 直接调用Faster R-CNNATSS算法 评价指标 一提到评价指标,我们下意识其实是准确度精度,确实如此。目标检测部分常用的评价指标为: 召回率(recall)——含有...
  • 校验计算方法

    千次阅读 2019-12-02 22:15:20
    编写一个计算机程序用来计算一个文件的16位效验。最快速的方法是用一个32位的整数来存放这个。记住要处理进位(例如,超过16位的那些位),把它们加到效验中。 要求: 1)以命令行形式运行:check_sum infile ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 715,841
精华内容 286,336
关键字:

数据检验和怎么计算的