質問編集履歴

1

質問内容の詳細説明追加

2020/09/30 04:51

投稿

xmg
xmg

スコア20

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,76 @@
7
7
  **質問理由**
8
8
 
9
9
  javascript のビットデーター処理が難しくてとても悩んでいます。
10
+
11
+ 可変長データーと16進数の相互変換を行なうプログラムを
12
+
13
+ どのように完成されればよいかをおたずねしたいと思います。
14
+
15
+
16
+
17
+
18
+
19
+ ```javasript
20
+
21
+
22
+
23
+ function convert(val)
24
+
25
+ {
26
+
27
+ var buffer = [];
28
+
29
+
30
+
31
+ buffer.push((val & 0x7F));
32
+
33
+ val = (val >> 7)
34
+
35
+
36
+
37
+ while (val > 0)
38
+
39
+ {
40
+
41
+ buffer.push(0x80 + (val & 0x7f))
42
+
43
+ val = (val >> 7)
44
+
45
+ }
46
+
47
+ array2hex(buffer.reverse());
48
+
49
+ }
50
+
51
+
52
+
53
+ function array2hex(ar)
54
+
55
+ {
56
+
57
+ for (var i=0; i<ar.length; i++)
58
+
59
+ {
60
+
61
+ ar[i] = (ar[i].toString(16) == 0) ? "00" : ar[i].toString(16);
62
+
63
+ }
64
+
65
+ return "0x" + ar.join('');
66
+
67
+ }
68
+
69
+
70
+
71
+ ```
72
+
73
+ 上記のコードはネット上で見つけた見本ですが、実働するとおかしな値が返ってきました。
74
+
75
+ このコードは、可変長コードを作成するエンコードプログラムですが
76
+
77
+ 作動しないため、ほかの見本を探すのにかなりの時間をかけて
78
+
79
+ ようやく端的にまとまった見本を見つけました。
10
80
 
11
81
 
12
82