C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: バイナリーデータの変換について


(過去ログ 62 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■35737 / inTopicNo.1)  バイナリーデータの変換について
  
□投稿者/ AMI (1回)-(2009/05/13(Wed) 09:36:26)

分類:[VB.NET/VB2005 以降] 

お世話になっております。

現在、VB2005でシリアル通信のプログラムを組んでいるのですが、
ある計測機器からの受信データが、
「2l66co1J700N?oh05=・・・・」
といった風に、バイナリーデータで受信します。
これを普通のテキスト形式に変換したいのですが、
方法がわかりません。
機器の取扱説明書をみたら、
「下記公式にしたがって変換してください」
とあったのですが、
下記がどういう意味なのかがわかりませんでした。
すみませんが、ご教授の方よろしくおねがいします。

「(1st byte - 48) * 4096 + (2nd byte - 48) * 64 + (3rd byte - 48) 」
引用返信 編集キー/
■35738 / inTopicNo.2)  Re[1]: バイナリーデータの変換について
□投稿者/ επιστημη (1918回)-(2009/05/13(Wed) 10:01:20)
επιστημη さんの Web サイト
> 機器の取扱説明書をみたら、
> 「下記公式にしたがって変換してください」
> とあったのですが、
> 下記がどういう意味なのかがわかりませんでした。
>
> 「(1st byte - 48) * 4096 + (2nd byte - 48) * 64 + (3rd byte - 48) 」

書いてあったのは本当に「これだけ」ですか?
もしそうなら誰にもわかりません。メーカーにお問合わせください。

# てか真っ先にメーカーに訊くのがスジだと思うが


引用返信 編集キー/
■35739 / inTopicNo.3)  Re[2]: バイナリーデータの変換について
□投稿者/ .SHO (823回)-(2009/05/13(Wed) 10:04:27)
>「(1st byte - 48) * 4096 + (2nd byte - 48) * 64 + (3rd byte - 48) 」

この通り計算すればいいのでは?

16ビットのUnicodeを4ビット+6ビット+6ビットに分割して
それぞれに48のオフセットかませたように見えるけど…
引用返信 編集キー/
■35741 / inTopicNo.4)  Re[2]: バイナリーデータの変換について
□投稿者/ AMI (3回)-(2009/05/13(Wed) 10:13:05)
No35738 (επιστημη さん) に返信
>>機器の取扱説明書をみたら、
>>「下記公式にしたがって変換してください」
>>とあったのですが、
>>下記がどういう意味なのかがわかりませんでした。
>>
>>「(1st byte - 48) * 4096 + (2nd byte - 48) * 64 + (3rd byte - 48) 」
>
> 書いてあったのは本当に「これだけ」ですか?
> もしそうなら誰にもわかりません。メーカーにお問合わせください。
>
> # てか真っ先にメーカーに訊くのがスジだと思うが
>
>
早速のお返事ありがとうございます。
そうなんですよメーカーに聞きたいのですが、
製品自体が海外製で、代理店をいま探している現状です。

引用返信 編集キー/
■35743 / inTopicNo.5)  Re[3]: バイナリーデータの変換について
□投稿者/ AMI (4回)-(2009/05/13(Wed) 10:17:54)
No35739 (.SHO さん) に返信
> >「(1st byte - 48) * 4096 + (2nd byte - 48) * 64 + (3rd byte - 48) 」
>
> この通り計算すればいいのでは?
>
> 16ビットのUnicodeを4ビット+6ビット+6ビットに分割して
> それぞれに48のオフセットかませたように見えるけど…
この公式どおりというと、
受信データが「2l66co1J700N?oh05=・・・・」なので、
最初の数値が、「2」なので
1バイト目:(2 - 48) * 4096 =-188416
2バイト目:(1 - 48) * 64 =-3008



としたときに、
5バイト目に「c」8バイト目に「J」がでてくるのですが、これはどのように数値化すれば
よいのでしょうか?

引用返信 編集キー/
■35744 / inTopicNo.6)  Re[4]: バイナリーデータの変換について
□投稿者/ .SHO (824回)-(2009/05/13(Wed) 10:22:13)
> 最初の数値が、「2」なので
> 1バイト目:(2 - 48) * 4096 =-188416

「2」じゃなくて「16進の32」。
だから「10進の50」。
よって(50−48)*4096

引用返信 編集キー/
■35745 / inTopicNo.7)  Re[3]: バイナリーデータの変換について
□投稿者/ みきぬ (424回)-(2009/05/13(Wed) 10:37:04)
> 「2l66co1J700N?oh05=・・・・」

いちおう補足すると、それぞれの文字の ASCIIコード を使ってね。
引用返信 編集キー/
■35746 / inTopicNo.8)  Re[4]: バイナリーデータの変換について
□投稿者/ AMI (5回)-(2009/05/13(Wed) 10:38:47)
No35745 (みきぬ さん) に返信
>>「2l66co1J700N?oh05=・・・・」
>
> いちおう補足すると、それぞれの文字の ASCIIコード を使ってね。
ありがとうございます。
早速ASCIIコードで変換かけてみたいとおもいます。

引用返信 編集キー/
■35747 / inTopicNo.9)  Re[3]: バイナリーデータの変換について
□投稿者/ επιστημη (1919回)-(2009/05/13(Wed) 10:41:50)
επιστημη さんの Web サイト
> そうなんですよメーカーに聞きたいのですが、
> 製品自体が海外製で、代理店をいま探している現状です。

取説にはメールアドレス/URLの類が載っていないんですか?

引用返信 編集キー/
■35749 / inTopicNo.10)  Re[5]: バイナリーデータの変換について
□投稿者/ .SHO (825回)-(2009/05/13(Wed) 10:52:11)
> >>「2l66co1J700N?oh05=・・・・」
>>
>>いちおう補足すると、それぞれの文字の ASCIIコード を使ってね。
> ありがとうございます。
> 早速ASCIIコードで変換かけてみたいとおもいます。

計算してみたけど、違うっぽ。。。

「下記公式にしたがって変換してください」
以外に何か書かれてないんですか?
引用返信 編集キー/
■35750 / inTopicNo.11)  Re[4]: バイナリーデータの変換について
□投稿者/ AMI (6回)-(2009/05/13(Wed) 10:54:51)
No35747 (επιστημη さん) に返信
>>そうなんですよメーカーに聞きたいのですが、
>>製品自体が海外製で、代理店をいま探している現状です。
>
> 取説にはメールアドレス/URLの類が載っていないんですか?
>
取説は全て英語なのですが、
メールアドレス・電話番号も載っております。
電話番号が海外の番号で、ちょっと電話しづらい状況でした。
(日本語での電話対応できるのかなど・・)
代理店がなければ、最悪、メールでの質問をしてみたいとおみます。
ありがとうございます。

引用返信 編集キー/
■35751 / inTopicNo.12)  Re[6]: バイナリーデータの変換について
□投稿者/ みきぬ (425回)-(2009/05/13(Wed) 11:16:04)
επιστημη さんの回答が最も適切だと思います、と前おいて。

> 16ビットのUnicodeを4ビット+6ビット+6ビットに分割して
> それぞれに48のオフセットかませたように見えるけど…
>
この推測は概ねあってると思うんですよね〜。

# ちなみに手元でやってみたら 2f06 6cff 1687 001e fff8 014d が得られました
引用返信 編集キー/
■35756 / inTopicNo.13)  Re[7]: バイナリーデータの変換について
□投稿者/ .SHO (826回)-(2009/05/13(Wed) 12:24:16)
> # ちなみに手元でやってみたら 2f06 6cff 1687 001e fff8 014d が得られました

そうなんです。
で、これじゃぁまともな文字列にならないですね。
何かもう一工夫いる?^^;
引用返信 編集キー/
■35757 / inTopicNo.14)  Re[5]: バイナリーデータの変換について
□投稿者/ 774RR (356回)-(2009/05/13(Wed) 13:04:27)
それでただしい、んぢゃないのかな。
-48 っつのは 0x30='0' で 64 だから 0x6F='o' までの64文字種(6bit) のみ採用、
という方式でエンコードしたバイナリーにすぎないわけで。

2f06 6cff というバイナリ値が伝送されてきている。
これがすなわち UNICODE (UTF16) というわけではなく、ただのバイナリであるだけ、と。
ならばあとはそれを人の見られる形式=テキストにするだけのことで。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -