📅  最后修改于: 2023-12-03 15:23:38.989000             🧑  作者: Mango
垂直冗余校验(Vertical Redundancy Check,VRC)也叫奇偶校验(Parity Check),以一位二进制数据为单位进行校验,包括奇校验和偶校验两种方式。奇偶校验的主要作用是检测数据传输过程中是否出现了传输错误。
在实现奇偶校验时,通常需要使用以下步骤:
以下是一个用Python实现奇偶校验的例子:
def odd_parity_check(data: str) -> str:
"""
奇校验检查函数
:param data: 待检查数据(二进制字符串)
:return: 带有奇校验位的数据(二进制字符串)
"""
binary_data = [int(bit) for bit in data]
parity_bit = 1 if sum(binary_data) % 2 == 0 else 0
return ''.join([str(parity_bit)] + data)
def even_parity_check(data: str) -> str:
"""
偶校验检查函数
:param data: 待检查数据(二进制字符串)
:return: 带有偶校验位的数据(二进制字符串)
"""
binary_data = [int(bit) for bit in data]
parity_bit = 0 if sum(binary_data) % 2 == 0 else 1
return ''.join([str(parity_bit)] + data)
def parity_check(data: str, parity: str) -> bool:
"""
校验函数
:param data: 待校验数据(带有奇偶校验位的二进制字符串)
:param parity: 指定的校验方式,可能的值为 'odd' 或 'even'
:return: 校验结果,True表示校验成功,False表示校验失败
"""
binary_data = [int(bit) for bit in data[1:]]
parity_bit = int(data[0])
parity_sum = sum(binary_data)
if parity == 'odd':
return (parity_sum + parity_bit) % 2 == 1
elif parity == 'even':
return (parity_sum + parity_bit) % 2 == 0
else:
raise ValueError('Invalid parity setting')
奇偶校验作为最简单的校验方法之一,虽然只能检测出1位错误,但仍然具有一定的应用价值,尤其在数据传输距离短、误差率低的场合下。