ByteString
aをFloat32
(正確に32ビットのビッグエンディアンIEEE 754浮動小数点数)に変換する必要があります。これByteString
は、UDPクライアントを介して受信されるオープンサウンドコントロールストリームの一部です。私は多くの時間を研究に費やしてきたので、Smalltalkを持っている便利な人が私に解決策を教えてくれることを望んでいます。
前もって感謝します。
ByteString
aをFloat32
(正確に32ビットのビッグエンディアンIEEE 754浮動小数点数)に変換する必要があります。これByteString
は、UDPクライアントを介して受信されるオープンサウンドコントロールストリームの一部です。私は多くの時間を研究に費やしてきたので、Smalltalkを持っている便利な人が私に解決策を教えてくれることを望んでいます。
前もって感謝します。
フォーマットされた ASCII の 10 進数ではなくバイナリ データを受け取っているように見えるので、ByteString と呼ぶことはお勧めしませんが、むしろ ByteArray と呼ぶことをお勧めします。文字列は、ビットではなく文字を含むための抽象化です。
VisualWorks の場合、UninterpretedBytes
後で解釈するために生データ (ビットまたはむしろバイト) を格納することに特化したクラスがあります。このクラスには、バイトを解釈するために必要なすべてのメッセージが含まれています。たとえば、次のようになります#floatAt:bigEndian
。
| yourBinaryStream buffer |
yourBinaryStream := ... insert some code to create your stream here...
buffer:= UninterpretedBytes from: (yourBinaryStream next: 4).
nextFloat := buffer floatAt: 1 bigEndian: true
readFrom
VisualWorks では、クラスに実装されているスーパークラス メソッドを使用する必要がありますNumber
。最初に文字列に readstream を作成します。次に例を示します。
Number readFrom: '192843.887' readStream
Pharo Smalltalk では、次のことができます。
(Float readFrom: '4.2') asIEEE32BitWord
readFrom: 文字列から float を読み取るだけで、それを IEEE 754 に変換します...