UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
CRC.hpp
[詳解]
1//
2// CRC
3//
4// Copyright (c) 2022 udonrobo
5//
6
7#pragma once
8
10#include <stdint.h>
11
12namespace Udon
13{
14 constexpr size_t CRC8_SIZE = 1;
15
18 inline uint8_t CRC8(ArrayView<const uint8_t> buffer)
19 {
20 uint8_t crc = 0xFF; // initial value
21
22 for (const auto& it : buffer)
23 {
24 crc ^= it;
25
26 for (uint8_t bit = 0; bit < 8 /* CHAR_BIT */; ++bit)
27 {
28 if (crc & 0x80)
29 {
30 crc = (crc << 1) ^ 0x1D; // polynomial
31 }
32 else
33 {
34 crc <<= 1;
35 }
36 }
37 }
38
39 return crc ^ 0xFF; // final XOR
40 }
41
42} // namespace Udon
配列参照クラス
Definition ArrayView.hpp:27
Definition Bit.hpp:12
constexpr size_t CRC8_SIZE
Definition CRC.hpp:14
uint8_t CRC8(ArrayView< const uint8_t > buffer)
バイト列から CRC-8 値を計算する
Definition CRC.hpp:18