计算Ruby中一个字节的奇偶校验

dka*_*kam 6 ruby 3des des parity

在Ruby中计算字节是否具有奇数或偶数奇偶校验的最佳方法是什么?我有一个版本工作:

result = "AB".to_i(16).to_s(2).count('1').odd?
=> true
Run Code Online (Sandbox Code Playgroud)

将数字转换为字符串并计算"1"似乎是计算奇偶校验的一种不好的方法.有更好的方法吗?

我希望能够计算3DES密钥的奇偶校验.最终,我想将偶数字节转换为奇数.

谢谢,丹

Way*_*rad 7

除非你的东西不够快,否则保留它.它清晰简洁,性能优于您的想象.

我们将针对阵列查找进行基准测试,这是我测试过的最快的方法:

ODD_PARITY = [
  false,
  true,
  true,
  ...
  true,
  false,
]

def odd_parity?(hex_string)
  ODD_PARITY[hex_string.to_i(16)]
end
Run Code Online (Sandbox Code Playgroud)
  • 数组查找以每秒640,000字节的速率计算奇偶校验.
  • Bowsersenior的C代码以每秒640,000字节的速率计算奇偶校验.
  • 您的代码以每秒284,000字节的速率计算奇偶校验.
  • Bowsersenior的本机代码以每秒171,000字节的速率计算奇偶校验.
  • Theo的缩短代码以每秒128,000字节的速率计算奇偶校验.