算法
WangLanguager
喜欢IT,喜欢编程,希望遇到更多志同道合的朋友!
展开
-
图像处理中的颜色矩特征提取
HSV颜色空间将颜色分为色调(Hue)、饱和度(Saturation)和明度(Value)三个分量,更符合人类对颜色的感知。对每个颜色区域或通道计算颜色矩。颜色矩是描述颜色分布的统计量,包括均值、方差、偏度、峰度等。可以计算一阶矩(均值)、二阶矩(方差)、三阶矩(偏度)和四阶矩(峰度)等来表示颜色的分布特征。需要注意的是,颜色矩特征提取仅考虑颜色的统计信息,没有考虑像素之间的空间关系。汇总所有颜色区域或通道的颜色矩特征,得到最终的特征向量。颜色矩是一种用于描述图像颜色分布的统计特征,常用于颜色特征提取。原创 2024-04-16 09:22:56 · 117 阅读 · 0 评论 -
图像处理中的颜色直方图特征提取
HSV颜色空间将颜色分为色调(Hue)、饱和度(Saturation)和明度(Value)三个分量,更符合人类对颜色的感知。通过比较不同图像的颜色直方图特征,可以度量它们之间的相似性和差异性。可以使用固定大小的直方图容器或自适应的容器来记录每个颜色分量的频率。需要注意的是,颜色直方图特征提取忽略了像素之间的空间关系,只考虑了颜色分布信息。汇总所有颜色区域或通道的直方图,得到最终的颜色直方图特征向量。颜色直方图是一种常用的图像颜色特征表示方法,它用于描述图像中各个颜色分量的分布情况。原创 2024-04-15 09:00:41 · 118 阅读 · 0 评论 -
图像处理特征提取
卷积神经网络(Convolutional Neural Network,CNN)特征:CNN能够自动从图像中学习出具有较高区分度的特征表示,通过深度学习训练得到的卷积层特征可用于图像处理任务。尺度不变特征变换(Scale-Invariant Feature Transform,SIFT):SIFT是一种基于尺度空间的特征提取算法,能够提取出具有旋转和尺度不变性的图像特征点。图像处理中的特征提取是指从图像数据中提取出具有区分性和代表性的特征,以用于图像分类、目标检测、图像匹配等任务。原创 2024-04-13 17:55:38 · 266 阅读 · 0 评论 -
图像处理中的顶帽变换
顶帽变换结果将突出原始图像中比周围区域更明亮的小尺度细节或亮度变化。这种变换常用于增强图像的局部对比度,以突出微小的细节,例如血管、细胞核等。顶帽变换基于图像的开运算和原始图像之间的差异。开运算是先对图像进行腐蚀操作,然后再进行膨胀操作。其目的是平滑和细化图像中的细小结构。通过调整结构元素的大小和形状,可以控制顶帽变换的灵敏度和突出效果。这使得顶帽变换成为图像增强和特征提取的有用工具之一。顶帽变换(Top-Hat Transform)是一种形态学图像处理操作,用于突出图像中的小尺度亮度变化或细小细节。原创 2024-04-12 09:59:10 · 182 阅读 · 0 评论 -
图像处理中的击中击不中变换
通过定义适当的击中模板和击不中模板,可以检测到与目标形状完全匹配的部分,同时排除与背景或其他形状相似但不是目标的区域。在击中击不中变换中,需要定义两个模板结构元素:击中模板(hit template)和击不中模板(miss template)。击中模板定义了需要完全匹配的目标形状,而击不中模板定义了目标形状周围的背景或其他不希望匹配的区域。最终的击中击不中变换结果中,仅保留与击中模板完全匹配并且与击不中模板完全不匹配的像素点(前景),其余像素点被置为背景。原创 2024-04-11 09:42:02 · 258 阅读 · 0 评论 -
图像处理中的闭运算
闭运算在图像处理中常用于填充空洞、修复断开的物体、平滑边缘以及预处理图像以便于后续处理。同时,闭运算还可以用于去除小的空洞和凸出物体的尖锐特征,以得到更加具有连续性和平滑性的图像。在图像处理中,闭运算(Closing)是由膨胀和腐蚀操作组成的形态学操作序列,常用于填充物体的空洞、连接断开的物体以及平滑物体的边缘。原创 2024-04-10 13:40:22 · 196 阅读 · 0 评论 -
图像处理中的开运算
开运算在图像处理中常用于去除噪点、平滑边缘和预处理图像以便于后续处理。同时,开运算还可以用于提取图像中的特定形状、进行图像分割和物体测量等应用领域。在图像处理中,开运算(Opening)是由腐蚀和膨胀操作组成的形态学操作序列,常用于去除图像中的噪点、平滑物体的边缘以及分离相邻物体。原创 2024-04-09 08:59:40 · 161 阅读 · 0 评论 -
图像处理中的膨胀操作
膨胀操作在很多图像处理任务中都有广泛应用,例如图像填充、物体重建、形状分析等。它通常与其他形态学操作如腐蚀、开运算、闭运算等配合使用,以达到更好的图像处理效果。膨胀操作也基于结构元素(也称为膨胀核),它是一个小尺寸的形状模板。膨胀操作通过将结构元素与图像进行逐像素的比较来实现。膨胀操作通过对图像中的像素进行逻辑运算,使得与结构元素匹配的像素逐渐膨胀、扩大或连接。在图像处理中,膨胀(Dilation)是一种形态学操作,用于填充图像中的空洞、扩大物体的大小以及连接相近的物体。原创 2024-04-08 09:09:03 · 203 阅读 · 0 评论 -
图像处理中的腐蚀操作
腐蚀操作在很多图像处理任务中都有广泛应用,例如图像去噪、边缘检测、物体分割等。它通常与其他形态学操作如膨胀、开运算、闭运算等配合使用,以达到更好的图像处理效果。腐蚀操作通过对图像中的像素进行逻辑运算,使得与结构元素不匹配的像素逐渐被腐蚀、减小或删除。腐蚀操作基于结构元素(也称为腐蚀核),它是一个小尺寸的形状模板。腐蚀操作通过将结构元素与图像进行逐像素的比较来实现。在图像处理中,腐蚀(Erosion)是一种形态学操作,用于消除图像中的细小物体、噪点以及使目标区域更加平滑。原创 2024-04-07 13:51:50 · 175 阅读 · 0 评论 -
图像处理形态学操作
除了上述常见的形态学操作,还有其他一些高级形态学操作,如击中击不中变换(Hit-or-Miss Transform)、顶帽变换(Top-hat Transform)等,它们在特定的图像处理任务中有着重要的应用,例如图像分割、形状识别等。膨胀操作与腐蚀操作相反,它通过将结构元素与图像进行逐像素的比较,如果结构元素与图像至少有一个重叠,则该像素将被置为前景值。总之,形态学操作是一种重要的图像处理技术,通过对图像的几何形状进行改变,可以实现图像的去噪、分割、增强等目标。闭运算是先进行膨胀操作,再进行腐蚀操作。原创 2024-04-06 10:47:18 · 193 阅读 · 0 评论 -
FOC算法中为啥用PWM触发ADC中断
在FOC(Field Oriented Control,场向量控制)算法中,为什么要使用PWM(Pulse Width Modulation,脉宽调制)触发ADC(Analog-to-Digital Converter,模数转换器)中断呢?: 使用PWM触发ADC中断可以节省系统资源,避免频繁地轮询ADC状态或者使用定时器定时采样,从而提高系统的效率和响应速度。综上所述,使用PWM触发ADC中断可以实现电机控制系统的同步性、实时性,并且节省系统资源,是FOC算法中常见的做法。原创 2024-04-05 10:22:33 · 543 阅读 · 0 评论 -
RGB到Lab的转换原理及例程
这表示RGB颜色(128, 64, 192)转换为Lab颜色时,得到的Lab值为L = 40.96,a = 52.05,b = -57.62。在Lab颜色空间中,L表示亮度,a表示从红色到绿色的颜色分量,b表示从黄色到蓝色的颜色分量。需要注意的是,RGB到Lab的转换过程是一种近似转换,不是完全准确的。RGB到Lab的转换是将RGB颜色空间转换为Lab颜色空间,其中Lab颜色空间是一种在人眼感知上更均匀的颜色模型。以下是一个简单的例程,演示如何将RGB颜色转换为Lab颜色。原创 2024-04-01 09:28:37 · 834 阅读 · 0 评论 -
RGB到HSV的转换原理及例程
色相表示颜色的类型或者说种类,饱和度表示颜色的纯度或者说鲜艳度,明度表示颜色的亮度。RGB(红绿蓝)和HSV(色相、饱和度、明度)是两种常用的颜色模型,RGB用于表示彩色图像,而HSV主要用于描述颜色的特征。这表示RGB颜色(128, 64, 192)转换为HSV颜色时,得到的HSV值为色相(H)为270度,饱和度(S)为0.67,明度(V)为0.75。每个通道的取值范围为0-255,其中0表示没有该通道的颜色,255表示通道饱和度最高的颜色。转换完成后,得到的HSV值即为RGB颜色对应的HSV值。原创 2024-04-01 09:26:24 · 836 阅读 · 0 评论 -
RGB到CMYK的转换原理及例程
青、品红、黄三个通道分别对应RGB的补色,K通道表示黑色墨水的量。这表示RGB颜色(128, 64, 192)转换为CMYK颜色时,得到的CMYK值为(33, 67, 0, 25),其中C=33%,M=67%,Y=0%,K=25%。这些公式通过根据CMY通道的值计算出黑色墨水通道(K)的值,并将CMY通道调整为相对于K通道的比例。每个通道的取值范围为0-255,其中0表示没有该通道的颜色,255表示通道饱和度最高的颜色。RGB到CMYK的转换主要涉及两个步骤:RGB到CMY的转换和CMY到CMYK的转换。原创 2024-03-30 09:07:45 · 338 阅读 · 1 评论 -
RGB到灰度图像的转换原理及例程
其中,R表示红色通道的像素值,G表示绿色通道的像素值,B表示蓝色通道的像素值。这个公式中的权重数值是通过人眼对不同颜色的敏感度进行调整得到的,根据亮度感知比例来确定红、绿、蓝三个通道的贡献程度。需要注意的是,这只是一种常见的RGB到灰度图像转换算法,具体应用场景和需求可能会采用其他的转换方式。RGB到灰度图像的转换是一种常用的图像处理操作,其原理是根据人眼对不同颜色的敏感度,将彩色图像的红、绿、蓝三个通道的像素值按照一定权重进行加权平均,得到灰度图像的像素值。计算灰度值,并将其写入灰度图像矩阵中。原创 2024-03-30 09:06:37 · 569 阅读 · 0 评论 -
图像颜色空间转换算法
RGB到CMYK的转换: RGB到CMYK的转换涉及颜色空间的转换和颜色校正。图像颜色空间转换算法主要包括RGB到灰度图像的转换、RGB到CMYK的转换、RGB到HSV的转换以及RGB到Lab的转换。RGB到灰度图像的转换: 对于RGB图像,可以将每个像素点的红、绿、蓝三个通道的值按照一定权重进行加权平均,得到灰度图像的像素值。RGB到HSV的转换: HSV是一种直观的颜色表示方式,包含色相(Hue)、饱和度(Saturation)和亮度(Value)三个分量。原创 2024-03-29 09:04:15 · 344 阅读 · 0 评论 -
图像旋转算法双线性插值法详解
需要注意的是,双线性插值法是一种近似方法,并不完全精确地重建原图像的信息,但在一般情况下能够提供较好的结果。根据目标图像坐标,在原始图像上找到最近的四个像素位置,分别记为(x1, y1)、(x2, y1)、(x1, y2)、(x2, y2),其中 x1 和 y1 是整数,表示最近的左上角像素位置。双线性插值法通过插值计算,考虑了目标像素附近的邻域像素灰度变化趋势,从而在图像旋转过程中保持图像的平滑性和精确性。双线性插值法是一种常用的插值算法,用于在图像旋转、缩放等操作中估计目标像素的灰度值。原创 2024-03-29 09:02:51 · 532 阅读 · 0 评论 -
图像旋转算法最邻近插值法
图像旋转是一种常见的图像处理操作,在旋转过程中,最近邻插值法(Nearest Neighbor Interpolation)是一种简单而有效的插值算法。该算法通过选择离目标位置最近的原始图像像素来计算目标图像像素的值。需要注意的是,该示例中的旋转中心点为原始图像的中心点,角度为逆时针旋转。计算旋转中心点,通常是图像的中心点。计算目标图像坐标绕旋转中心旋转后的位置,可以使用旋转矩阵的变换公式。根据计算出的原始图像坐标,确定与之最近的原始图像像素位置。遍历目标图像的每个像素,计算它在原始图像中对应的位置。原创 2024-03-28 08:56:38 · 194 阅读 · 0 评论 -
图像缩放算法双立方插值法
双立方插值法(Bicubic Interpolation)是一种常用的图像缩放算法,它通过对原始图像中的像素进行加权平均来计算目标图像中的像素值。缩放因子可以根据目标图像的宽度和高度与原始图像的宽度和高度之间的比值来计算。重复步骤 2 和步骤 3,遍历所有目标图像像素,计算它们在原始图像上的对应像素及其灰度值,并赋给目标图像。对于每个目标图像像素,根据其在原始图像上的坐标计算出最近的16个像素的灰度值,并根据距离进行加权平均。遍历目标图像的每个像素,根据缩放因子计算出对应的原始图像上的坐标。原创 2024-03-28 08:55:24 · 322 阅读 · 0 评论 -
递归详解,斐波那契数列、二叉树遍历、汉诺塔问题的递归代码
否则,将n-1个盘子从from柱子借助to柱子移动到by柱子,再将第n个盘子从from柱子移动到to柱子,最后将n-1个盘子从by柱子借助from柱子移动到to柱子。需要注意的是,在使用递归遍历二叉树时,需要判断当前节点是否为空,如果为空则直接返回;在递归过程中,问题会不断被分解为规模更小的子问题,直到达到一个基本情况,该基本情况可以被直接求解,而无需再进行递归调用。在主函数中,我们定义了汉诺塔的圆盘数n和三根柱子的名称A、B、C,并调用move函数将n个盘子从A柱子借助B柱子移动到C柱子。原创 2023-06-02 22:00:00 · 900 阅读 · 0 评论 -
算法时间复杂度、空间复杂度
常见的时间复杂度有O(1), O(logN), O(N), O(NlogN), O(N^2), O(2^N)等,其中O(1)表示算法的复杂度是常数级别的,不随输入规模增大而增加,O(N)表示算法的复杂度与输入规模成线性关系,O(N^2)表示算法的复杂度为平方级别,随着输入规模增大而呈二次方增长,O(2^N)表示算法的复杂度呈指数级别增长,极容易出现性能瓶颈。在大O表示法中,算法的时间复杂度用O(f(n))来表示,其中n为问题规模,f(n)为算法执行时所需的基本操作数量。原创 2023-06-03 22:45:00 · 79 阅读 · 0 评论 -
3DES加密算法及Python实现
在CBC模式下,首先使用一个密钥进行DES加密操作,接着使用另一个密钥进行DES解密操作,最后再使用第一个密钥进行DES加密操作。3DES的密钥长度为168位,由于计算机运算能力的增强,原版的DES密码的密钥长度变得容易被暴力破解;而3DES通过增加DES的密钥长度来避免类似的攻击。需要注意的是,由于3DES的加密过程较为复杂,因此会占用相对较多的处理时间和计算资源。需要注意的是,由于3DES的密钥长度为168位,因此在本例程中,我们使用了两个密钥拼接而成的方式来表示3DES的密钥。原创 2023-06-23 22:00:00 · 1781 阅读 · 0 评论 -
DES加密算法及Python实现
首先对明文进行按位填充,然后调用encrypt()和decrypt()函数实现加密和解密操作,最后去除填充并返回解密后的明文。密钥的生成:将64位密钥按照置换选择1表进行置换,得到56位的密钥,并分成左右两部分各28位。16轮迭代:将加密得到的块分成左右两部分各32位,分别作为下一轮的输入,重复上述运算直到第16轮。加密运算:把置换后的明文块和第1个子密钥进行加密运算,得到一个64位的块。初始置换:对64位的明文按照初始置换表进行置换处理。明文分组:将明文分成64位的块,对每个块进行加密。原创 2023-06-22 20:30:00 · 1722 阅读 · 0 评论 -
几种对称加密算法
3、AES(Advanced Encryption Standard)是目前最广泛应用的对称加密算法之一,其密钥长度可以是128位、192位或256位,比DES和3DES更安全可靠,而且加密解密速度较快,被广泛应用于各种领域的数据加密保护中。其特点是加密和解密使用相同的密钥,也就是说,密钥是公开的,双方通过协商得到同一个密钥,然后使用该密钥对明文进行加密和解密操作。RC4算法简单易于实现,加密和解密使用相同的密钥,并且没有固定的块大小,可以实现对任意长度的数据流加密。秘钥长度不同,加密强度不同;原创 2023-06-26 20:00:00 · 4734 阅读 · 0 评论 -
哈希搜索算法及C语言实现
线性探测法(Linear Probing):使用一个数组存储整个哈希表,在发生哈希碰撞时,从当前位置开始向后依次查找第一个空闲的位置,并将元素插入到该位置中,当需要查找某个元素时,首先计算出该元素的哈希值,并定位到对应的位置,如果该位置为空,则说明目标元素不存在于哈希表中;否则,如果该位置存储的元素与目标元素相同,则直接返回;需要注意的是,哈希表的实现涉及到很多细节问题,比如哈希函数、冲突解决方法等,如果没有特殊需求,可以使用已经实现好的哈希表库,例如C++ STL库中的 unordered_map 类。原创 2023-06-27 21:30:00 · 245 阅读 · 0 评论 -
二分搜索算法及C语言实现
上述代码中,binary_search 函数用来实现二分查找,在函数内部使用 while 循环不断缩小查找范围,最终返回目标元素的下标或者-1表示目标元素不在给定的数组中。值得注意的是,在使用二分查找时需要保证数组是有序的,否则无法使用该算法。此外,在计算数组中间位置的下标时,为了防止整型变量的溢出,建议采用 (left + right) / 2 或者 left + (right-left)/2 的方式进行计算。二分搜索是一种高效的查找算法,可以在有序数组中快速定位目标元素位置。将待查找区间的中间位置。原创 2023-06-28 21:00:00 · 375 阅读 · 0 评论 -
线性搜索算法及C语言实现
线性搜索算法(也称为线性查找)是在一组元素中按照顺序逐一查找特定元素的算法。它是一种最基础、最简单的查找方法,适用于任何类型的数据。具体实现过程是从数组的第一个元素开始,依次检查数组中的每个元素,直到找到目标元素或者查找整个数组都没有找到目标元素。以上代码中,arr 是待查找的数组,n 是数组长度,target 是待查找的目标元素。在 main 函数中,我们调用 linear_search 函数完成数组元素的查找,最后输出查找结果。从数组的第一个元素开始进行比较,如果查找到了目标元素,返回它所在的位置;原创 2023-06-29 23:30:00 · 399 阅读 · 0 评论 -
归并排序算法及C语言实现
其核心思想是将待排序的数组分为两个相等的部分,对这两个部分分别进行递归排序,最后将两个有序的子数组合并成一个有序的整体。可见归并排序的时间复杂度为。合并将相邻的两个单个元素的子序列进行合并,成为一个长度为 2 的有序子序列;接着,将相邻的两个长度为 2 的有序子序列合并,成为一个长度为 4 的有序子序列;以上代码中,merge 函数用于合并两个有序数组,merge_sort 函数是归并排序的主体函数,用于递归排序和合并数组。分解将待排序的数组递归分解为越来越小的子序列,直到分解成单个元素的子序列。原创 2023-06-30 21:30:00 · 499 阅读 · 0 评论 -
快速排序及C语言实现
快速排序算法是一种基于“分治思想”的高效排序算法,其原理是将一个可排序序列按照某个基准数划分成两个子序列,其中左边的子序列所有元素均小于等于基准数,右边的子序列所有元素均大于等于基准数,再对左右子序列分别递归执行同样的操作,直到整个序列有序为止。以上代码中,swap 函数用于交换两个数的值,partition 函数则是选择一个基准数(这里选择最后一个元素)将数组划分成左右两部分,并返回基准数所在的位置。但是,它也有一些缺点,例如在极端情况下,如当待排序的序列已经有序时,快排算法的时间复杂度会退化到。原创 2023-07-01 22:00:00 · 119 阅读 · 0 评论 -
插入排序及C语言实现
插入排序是一种简单的排序算法,其基本思想是将未排序序列中的每个元素依次插入到已排序的序列中合适的位置。外层循环负责遍历未排序序列,内层循环则负责在已排序序列中寻找合适的插入位置。注意,在 C 语言中,数组的下标是从 0 开始计数的,因此在插入排序算法的实现中,也需要注意数组下标的起始值。在函数内部,外层循环从第二个元素开始遍历整个序列,内层循环则负责在已排序序列中寻找合适的插入位置。从第二个元素开始,依次遍历整个序列,将当前遍历到的元素标记为。中,直到所有的元素都被插入到已排序的序列中。原创 2023-07-02 21:30:00 · 160 阅读 · 0 评论 -
选择排序及C语言实现
选择排序(Selection Sort)是一种基本的排序算法,它的基本思想是将待排序序列分成已排序区间和未排序区间,每次从未排序的区间中选出最小(大)的元素,将其放入已排序区间的末尾,直到所有元素都排完序位置。for 循环遍历整个数组,每次从剩余未排序部分中找出最小元素的下标,再将该元素和已排序部分的末尾交换位置。将当前元素和 minIndex 位置上的元素进行交换,把最小值放到已排序区间的末尾。选择排序的优点是简单易于理解,缺点是时间复杂度较高,为 O(n^2)。重复上述过程直到未排序区间为空。原创 2023-07-06 21:00:00 · 271 阅读 · 0 评论 -
嵌入式常用算法
在嵌入式系统中,排序算法通常被用于对传感器数据进行处理和滤波,以减小系统的噪声和误差。在嵌入式系统中,搜索算法通常被用于对大量数据的查询和匹配,例如对数据库中的记录进行搜索。此外,还有其他常用的算法,如数字信号处理(DSP)、人工智能(AI)和机器学习(ML)算法等,在嵌入式系统中也得到了广泛的应用。嵌入式系统中常用的算法包括排序算法、搜索算法、加密算法和图像处理算法等。常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。常见的加密算法有对称加密算法、非对称加密算法、哈希算法等。原创 2023-07-07 23:00:00 · 174 阅读 · 0 评论 -
堆栈的定义和用途
这个例程中,我们定义了一个结构体 Stack 表示堆栈,它包含一个数组 data 和一个整型变量 top,表示堆栈的元素和栈顶位置。堆栈的数据结构和算法堆栈(stack)是一种常用的数据结构,常用于需要先进后出(Last In First Out,LIFO)操作的场合。应用程序:堆栈被用来存储程序的执行过程中的状态信息,例如Android中的任务堆栈就是用来管理Activity的,帮助多任务处理。编译器:堆栈被用来实现表达式的计算和语句的执行,以及控制程序的流程等。原创 2023-04-10 23:00:00 · 2832 阅读 · 0 评论 -
冒泡排序及C语言实现
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它的基本思路是通过比较相邻元素的大小关系,将大的元素交换到数组的末尾,同时不断缩小排序范围,直到整个数组有序为止。具体过程如下:从数组的第一个元素开始,依次比较相邻两个元素的大小。如果第一个元素比第二个元素大,则交换这两个元素的位置。继续向后比较,直到最后一个元素,此时最后一个元素应该是整个数组中最大的元素。重复以上步骤,不断缩小排序范围,并将剩余元素中的最大值放置在正确的位置上,直到整个数组排序完成。原创 2023-03-27 12:00:00 · 107 阅读 · 0 评论 -
提高EEPROM擦写寿命的各种方法--软件均衡擦写算法举例
在初始化时,我们将所有块的擦写次数都清零。在写入数据时,我们首先计算出写入数据所在的块号,将数据写入EEPROM中,并更新该块的擦写次数。具体来说,我们会寻找所有块中擦写次数最小的块,将其数据复制到当前块中,并将该块擦除,同时将其擦写次数重置为0。EEPROM均衡算法是一种用于延长EEPROM寿命的技术,其思路是通过均衡不同块的擦写次数,来减轻单个块的使用压力,从而延长EEPROM整体的使用寿命。采用均衡算法:EEPROM的擦写寿命通常是按块计算的,因此采用块的均衡擦写算法可以延长EEPROM的寿命。原创 2023-03-26 22:00:00 · 1509 阅读 · 1 评论 -
CRC校验算法以及相关实现示例
接收方在接收到数据后,也可以重新计算校验码,若接收到的校验码与重新计算出的校验码不同,则说明数据存在错误。在这个函数中,我们首先将初始值设为0xFFFF,然后按照CRC算法对输入数据进行处理,并返回计算得到的CRC值。最后,在主函数中,我们定义了一个测试数据数组msg,并将它传入crc_ccitt()函数中计算得到CRC校验值,并输出结果。接收方收到数据帧后,也按照同样的方法计算出校验码,如果计算出的校验码与接收到的校验码相同,则数据传输没有出错。CRC码是由数据生成的,不必提前设定。原创 2023-03-22 22:30:00 · 1401 阅读 · 0 评论 -
AES加密算法的Python实现
AES(Advanced Encryption Standard)是一种对称密钥加密算法,是目前应用最广泛的加密算法之一。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,在2001年被美国国家标准技术研究所(NIST)选定为新的高级加密标准(AES)。AES使用了一个块加密算法,将明文分成固定长度的数据块,并且对每个数据块进行加密操作。其密钥长度可以是128位、192位或256位,这使得AES比之前的DES算法更加安全。原创 2023-03-21 13:57:44 · 1255 阅读 · 0 评论 -
中国象棋将帅问题
1、问题描述:假设棋盘上只有“将”和“帅”两个棋子,两个棋子被限定在自己的界限内动作。写程序列举出两个棋子所有的合法位置。2、 “将”和“帅”的位置以N表示,即N=1,2,3,4,5,6,7,8,9 一共有9个位置如果“将”在1的位置,则“帅”不能在1、4、7的位置。如果“将”在2的位置,则“帅”不能在2、5、8的位置。如果“将”在3的位置,则“帅”不能在3、6、9的位置。如果“将”在4的位置,则“帅”不能在1、4、7的位置。如果“将”在5的位置,则“帅”不能在2、5、8的位置。原创 2022-04-16 10:16:59 · 517 阅读 · 0 评论 -
第三课,例题:计算多项式在x = 1.1处的值
1、多项式为: 2、可以直接对多项式的每一项求值后再进行叠加for(i = 1; i <= n; i ++) p += (a[i] * pow(x, i));3、也可以将多项式进行分解:代码为:for(i = n; i > 0; i --) p = a[i - 1] + x*p;4、两种方法的代码和运行时间求值为:// lesson003.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#inclu.原创 2022-03-03 23:35:06 · 89 阅读 · 0 评论 -
不能在主文件中用include来包含子文件
不能在主文件中用include来包含子文件原创 2015-01-03 10:20:36 · 974 阅读 · 0 评论