回答編集履歴

2

float to Int16

2017/03/24 06:40

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -35,3 +35,31 @@
35
35
  こうすれば±0x8000で表示されてバイナリデータっぽくなりますw
36
36
 
37
37
 
38
+
39
+ ---
40
+
41
+
42
+
43
+ 【追記されたInt16のデータについて】
44
+
45
+
46
+
47
+ ```
48
+
49
+ -0.00427246 * 0x8000 = -139.99996928 ≒ -140 = -0x008c
50
+
51
+ -0.0166626 * 0x8000 = -546.0000768 ≒ -546 = -0x0222
52
+
53
+ -0.0283508 * 0x8000 = -928.9990144 ≒ -929 = -0x03a1
54
+
55
+ (以下略)
56
+
57
+ ```
58
+
59
+
60
+
61
+ floatだろうがInt16だろうが、スケールが違うだけで同じ値なのですよ。
62
+
63
+
64
+
65
+

1

0x

2017/03/24 06:40

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -13,3 +13,25 @@
13
13
  `floatChannelData`で取得しているようなのでfloat値になっているのでしょう。
14
14
 
15
15
  `int16Channel​Data`や`int32Channel​Data`を使えば整数値で取得出来るような気がします。
16
+
17
+
18
+
19
+ ---
20
+
21
+
22
+
23
+ 今のままでも、このfloat値が±1.0だと仮定すると、
24
+
25
+
26
+
27
+ ```swift
28
+
29
+ print(String(Int(self.buffer[i][j] * 0x8000), radix: 16))
30
+
31
+ ```
32
+
33
+
34
+
35
+ こうすれば±0x8000で表示されてバイナリデータっぽくなりますw
36
+
37
+