teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容の詳細説明追加

2020/09/30 04:51

投稿

xmg
xmg

スコア20

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,42 @@
3
3
 
4
4
  **質問理由**
5
5
  javascript のビットデーター処理が難しくてとても悩んでいます。
6
+ 可変長データーと16進数の相互変換を行なうプログラムを
7
+ どのように完成されればよいかをおたずねしたいと思います。
6
8
 
9
+
10
+ ```javasript
11
+
12
+ function convert(val)
13
+ {
14
+ var buffer = [];
15
+
16
+ buffer.push((val & 0x7F));
17
+ val = (val >> 7)
18
+
19
+ while (val > 0)
20
+ {
21
+ buffer.push(0x80 + (val & 0x7f))
22
+ val = (val >> 7)
23
+ }
24
+ array2hex(buffer.reverse());
25
+ }
26
+
27
+ function array2hex(ar)
28
+ {
29
+ for (var i=0; i<ar.length; i++)
30
+ {
31
+ ar[i] = (ar[i].toString(16) == 0) ? "00" : ar[i].toString(16);
32
+ }
33
+ return "0x" + ar.join('');
34
+ }
35
+
36
+ ```
37
+ 上記のコードはネット上で見つけた見本ですが、実働するとおかしな値が返ってきました。
38
+ このコードは、可変長コードを作成するエンコードプログラムですが
39
+ 作動しないため、ほかの見本を探すのにかなりの時間をかけて
40
+ ようやく端的にまとまった見本を見つけました。
41
+
7
42
  うまく作動する見本を検索したところ、とても単純なコードを見つけました。
8
43
  ここで見つけた見本は、聞いたこともない
9
44
  新しい言語ですが、それを用いると、