Matlab のヘルプ ファイルで typecast がどのように説明されているかを理解しました。しかし、私の結果に対処することはできません。次のように3x4マトリックスを型キャストしようとしました。
A= -0.0022 -87.8788 -96.2848 -96.9586
0.9891 -52.9250 -52.7722 -52.7780
0.1473 -4.8680 -6.0184 -5.9894
ANS = typecast(A(:), 'uint16');
次に、ANS ベクトルは次のようになります。
ANS=65304
47886
13518
16253
55853
15894
49650
49839
45875
49747
50835
49307
37329
49856
5820
49747
38546
49344
60110
49857
7340
49747
43369
49343
つまり、-0.0022 には 65304 と 47886 の 2 つの 16 ビット値があります。どのように計算されますか? では、C++ でどのように実装できますか? C++では、次のように実装しました
float f = -0.0022;
unsigned short a = static_cast<unsigned int>(f);
unsigned short b = static_cast<unsigned int>(f)>>16;
65304 と 47886 のように a と b を持つことはできません。