回答編集履歴

2

追記

2020/04/19 16:01

投稿

meg_
meg_

スコア10602

test CHANGED
@@ -1,3 +1,41 @@
1
+ 【追記】一部実装してみました。
2
+
3
+ ```Python
4
+
5
+ command = b"\x01\x04\x00\x00\x00\x01"
6
+
7
+ crc_registor = 0xFFFF
8
+
9
+
10
+
11
+ for data_byte in command:
12
+
13
+ tmp = crc_registor ^ data_byte
14
+
15
+ ```
16
+
17
+ ```VBA
18
+
19
+ command = &H140001
20
+
21
+ crc_registor = &HFFFF&
22
+
23
+
24
+
25
+ For i = 1 To Len(Hex(command))
26
+
27
+ data_byte = Val("&H" & Mid(Hex(command), i, 1) & "&")
28
+
29
+ tmp = crc Xor data_byte
30
+
31
+ Next i
32
+
33
+ ```
34
+
35
+
36
+
37
+ ---
38
+
1
39
  ``inputdata``に値を格納する際に``Set``は不要です。
2
40
 
3
41
  質問のコードでは``inputdata``Byte型の変数なので、格納できるのは0~255の範囲の単精度の正の数値となります。そのため``inputdata = &H140001``はオーバーフローします。

1

追記

2020/04/19 16:01

投稿

meg_
meg_

スコア10602

test CHANGED
@@ -1,3 +1,33 @@
1
1
  ``inputdata``に値を格納する際に``Set``は不要です。
2
2
 
3
3
  質問のコードでは``inputdata``Byte型の変数なので、格納できるのは0~255の範囲の単精度の正の数値となります。そのため``inputdata = &H140001``はオーバーフローします。
4
+
5
+
6
+
7
+ ------
8
+
9
+ > "\x01\x04\x00\x00\x00\x01"を1バイトずつ
10
+
11
+
12
+
13
+ 配列にしてはどうでしょうか?
14
+
15
+ ```VBA
16
+
17
+ Dim a(6) As Byte
18
+
19
+
20
+
21
+ a(1) = 1
22
+
23
+ a(2) = 4
24
+
25
+ a(3) = 0
26
+
27
+ a(4) = 0
28
+
29
+ a(5) = 0
30
+
31
+ a(6) = 1
32
+
33
+ ```