2022-04-10 02:08:23
1度バイナリ設定した値を戻す方法。
以前「1259 UDPで一度に複数データを送る場合https://www.eznavi.net/site/bbs/index2.php?pagetop=1259」で質問させていただいた件の関連になるのですが、 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー !”nakonet.nako”を取り込む。 クライアントとはUDP。 クライアントのポートは9000。 クライアントのホストは「127.0.0.1」。 クライアントの自ポートは9001。。 クライアントに接続。 クライアントで受信した時は 「受信しました」と表示。 クライアントの受信データを表示。 クライアントで接続した時は 「接続成功」と表示。 クライアントにOSCメッセージ変換(「/avatar/parameters/testdata1」,「f」,1.234)を送信。 クライアントにOSCメッセージ変換(「/avatar/parameters/testdata2」,「i」,123)を送信。 クライアントでエラー時は 「接続失敗」と表示。 *OSCメッセージ変換(A,T,P) #アドレス+\0 OSCメッセージはA。 4-(Aの文字数と4の余り)回 OSCメッセージはOSCメッセージ&「{\0}」。 #引数型追加 OSCメッセージはOSCメッセージ&「,{T}」。 4-(Tの文字数+1と4の余り)回 OSCメッセージはOSCメッセージ&「{\0}」。 Tで条件分岐 「f」ならば 引数はFLOAT(P)を浮動小数点数変換。 「i」ならば 引数はINT(P)を整数変換。 OSCメッセージはOSCメッセージ&引数。 OSCメッセージを戻す。 *浮動小数点数変換(数値を) 仮に4を確保。浮動小数点数に4を確保。 仮の1に「FLOAT」で数値をバイナリ設定。 Noを4から1まで繰り返す バイト=仮のNoを「BYTE」でバイナリ取得。 浮動小数点数の回数に「BYTE」でバイトをバイナリ設定。 浮動小数点数を戻す。 *整数変換(数値を) 仮に4を確保。整数値に4を確保。 仮の1に「INT」で数値をバイナリ設定。 Noを4から1まで繰り返す バイト=仮のNoを「BYTE」でバイナリ取得。 整数値の回数に「BYTE」でバイトをバイナリ設定。 整数値を戻す。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 教えていただいたこのプログラムで一度バイナリデータにした内容を再び元に戻す方法はないでしょうか? 作ってみたところINTの場合16進数にはなっていると思いますがFLOATの場合は正しい値になりませんでした。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー !”nakonet.nako”を取り込む。 クライアントとはUDP。 クライアントのポートは9001。 クライアントのホストは「127.0.0.1」。 クライアントの自ポートは9000。 クライアントのタイプは「UDP」。 クライアントに接続。 クライアントで受信した時は 仮=クライアントの受信データを「{\0}」で区切る。 A=0 仮の配列要素数回 もし仮\(回数-1)<>「」ならば 本\A=仮\(回数-1)。 Aに1を直接足す。 もし本\1=「,i」ならば 「本\0}INT:{INT(本¥2をバイナリダンプ)}」と表示。 違えばもし本\1=「,f」ならば 「本\0}FLOAT:{FLOAT(本¥2をバイナリダンプ)}」と表示。 クライアントで接続した時は 「接続成功」と表示。 クライアントでエラー時は 「接続失敗」と表示。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 後前の質問に解決マークを付ける方法がわからないのでできればそれも教えていただきたいです。 よろしくお願いします。 |