回答編集履歴
2
float to Int16
answer
CHANGED
@@ -16,3 +16,17 @@
|
|
16
16
|
```
|
17
17
|
|
18
18
|
こうすれば±0x8000で表示されてバイナリデータっぽくなりますw
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
【追記されたInt16のデータについて】
|
23
|
+
|
24
|
+
```
|
25
|
+
-0.00427246 * 0x8000 = -139.99996928 ≒ -140 = -0x008c
|
26
|
+
-0.0166626 * 0x8000 = -546.0000768 ≒ -546 = -0x0222
|
27
|
+
-0.0283508 * 0x8000 = -928.9990144 ≒ -929 = -0x03a1
|
28
|
+
(以下略)
|
29
|
+
```
|
30
|
+
|
31
|
+
floatだろうがInt16だろうが、スケールが違うだけで同じ値なのですよ。
|
32
|
+
|
1
0x
answer
CHANGED
@@ -5,4 +5,14 @@
|
|
5
5
|
```
|
6
6
|
|
7
7
|
`floatChannelData`で取得しているようなのでfloat値になっているのでしょう。
|
8
|
-
`int16ChannelData`や`int32ChannelData`を使えば整数値で取得出来るような気がします。
|
8
|
+
`int16ChannelData`や`int32ChannelData`を使えば整数値で取得出来るような気がします。
|
9
|
+
|
10
|
+
---
|
11
|
+
|
12
|
+
今のままでも、このfloat値が±1.0だと仮定すると、
|
13
|
+
|
14
|
+
```swift
|
15
|
+
print(String(Int(self.buffer[i][j] * 0x8000), radix: 16))
|
16
|
+
```
|
17
|
+
|
18
|
+
こうすれば±0x8000で表示されてバイナリデータっぽくなりますw
|