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