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

回答編集履歴

2

float to Int16

2017/03/24 06:40

投稿

fuzzball
fuzzball

スコア16733

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

2017/03/24 06:40

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -5,4 +5,14 @@
5
5
  ```
6
6
 
7
7
  `floatChannelData`で取得しているようなのでfloat値になっているのでしょう。
8
- `int16Channel​Data`や`int32Channel​Data`を使えば整数値で取得出来るような気がします。
8
+ `int16Channel​Data`や`int32Channel​Data`を使えば整数値で取得出来るような気がします。
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