質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

3回答

5287閲覧

漢字をSHIFT-JISのコード(16進数)に変換することの呼び方

SystemAjisai

総合スコア174

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2019/08/21 09:40

前提・実現したいこと

用語の質問なのでタグが曖昧で申し訳ありません。

パソコンから計測器に対して、TCP/IPという通信方法でデータを送信しようとしています。
計測器の仕様書に

  • 水平パリティチェック方式BCCを付加する
  • 文字コードはshift-JIS

と書いてあり、この「BCCを付加する」の部分に関連して教えて頂きたいことがあります。

水平パリティチェックとBCC、送りたいメッセージが日本語と言うのを踏まえて自分で調べた結果

  1. 1文字ずつShift-JISの文字コードを調べる(晴⇒90B0)
  2. 16進数のコードを2進数に変換する(90B0⇒1001000010110000)
  3. 8文字以上の時は8文字ずつに分ける(10010000、10110000)

として、図のようにして水平パリティチェック(偶数)と言うのをしてみたら、仕様書のサンプルと一致しました。
イメージ説明
※本物は長いので縮小版にしてます。

これをプログラムで作ろうとしているのですが、1の「1文字ずつShift-JISの文字コードを調べる」のところで躓いてしまいました。
「Node.js 文字コード Shift-JIS 変換」等で調べると、UTF-8からShift-JISに変換するといった類の内容のものばかりがヒットしてしまいます。

「晴」が「90B0」といった「90B0」に相当するコードは何という名前なのでしょうか?
もしくは、「晴」⇒「90B0」に変換することの名称のような、検索のキーワードになる用語を教えてください!

補足情報

文字のコードを調べるのに参照させていただいたサイト
http://charset.7jp.net/jis0208.html
http://www12.plala.or.jp/mz80k2/electronics/ascii/ascii.html

水平パリティ方式で参照させていただいたサイト
http://www5e.biglobe.ne.jp/~komichan/network/n1_CRC.html

言語について

以前「Node.jsは標準ではShift-JISが扱えない(ライブラリがいる)」など調べた記憶があり、
言語と文字コードの間に関係があるのか無いのか判断がつかなかったので、知っている言語をタグに入れました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

「2バイト文字」では?

Google 検索結果

投稿2019/08/21 09:50

編集2019/08/21 11:04
kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SystemAjisai

2019/08/21 10:27

ありがとうございます。 2進数にした時に8文字の時と16文字の時があるのは何でだろうと思ってたのですが意味が分かりました。
SystemAjisai

2019/08/21 11:00

早速間違えました。8文字⇒6bit(1バイト)、16文字⇒16bit(2バイト)が正しいのですね。 2進数の1とか0が「1文字」に見えてしまうのです…。
guest

0

ベストアンサー

「晴」が「90B0」といった「90B0」に相当するコードは何という名前なのでしょうか?

16進コード、もしくは16進数化されたコード あたりかと思います。

もしくは、「晴」⇒「90B0」に変換することの名称のような、検索のキーワードになる用語を教えてください!

(その文字コードにおける)(文字の) 16進数変換とかHex変換16進コードへの変換とかじゃないでしょうか。

[補足]
私なら、

  1. SJISに変換できるライブラリを使って変換後にコードを取得できないか試してみる
  2. javascript 文字 16進数変換 あたりで調べて実装の方向を検討する
  3. どうにもならなそうなら、参照されているコード表をそのまま使って力業で文字とコードのマッピングをしてしまう

あたりで実装するかなと思います。

投稿2019/08/21 10:26

編集2019/08/21 10:42
tanat

総合スコア18716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SystemAjisai

2019/08/21 11:47

回答ありがとうございます。 自分で質問のタイトルには16進数と入れているのに、なぜ検索キーワードに入れなかったのか…! 2進数も16進数も初めましての状態だったので、いろいろグチャグチャだったみたいです。。。 まだフワフワしている最中ですが、y-waiwaiさんに回答頂いたこともあわせつつ、補足に書いていただいた方向で検討を進めていけそうです。 回答頂いた方みなさんの話を合わせてやっと理解が追い付いたという状況でベストアンサーをどうしようという感じなのですが、こんなバカな質問に丁寧に具体的な方針まで出してくださったtanatさんにさせて頂きます。 本当にありがとうございました!
guest

0

BCCのところだけ。
バイナリを2進数どーこーしなくても、バイト単位でXORしていけばいいだけです

投稿2019/08/21 10:09

y_waiwai

総合スコア88024

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SystemAjisai

2019/08/21 10:57

回答ありがとうございます。 XORと言う単語は仕様書にでてました…! 説明を読んでも何を言っているのか微塵も理解できなかったので、水平パリティチェックの説明と合わせ読んだ結果「きっとこれは偶数パリティって意味だな」と解釈してしまいました。 そもそもビットとバイトが理解できなかったんですがasuchi0819さんに教えて頂いた2バイト文字がヒントになって「バイト単位でXOR」の意味も理解することができました。 STXは含めないとあったので、それ以降で1バイトずつXORしてみたら同じ結果になりました(まだ手動ですが) 勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問