• ベストアンサー
  • 暇なときにでも

ASCIIコードについて

先日、仕事でシリアルケーブルで接続されているPC~装置間にラインモニタをセットし、通信電文を調査したところ、「31B9AEB5」となっており、装置上には「19.5」と表示されていました。対応として、 0x31=1 0xB9=9 0xAE=. 0xB5=5 のようになっているようです。ASCIIコードだと考えると「0x31=1」は納得するのですが、「0xB9=9」以降が良くわかりません。上記データから0x80を引くと「0x39」「0x2E」「0x35」となり、ASCIIコード表のデータに一致します。 そこで質問なのですが、上記の場合「0xB9」「0xAE」「0xB5」はASCIIコードなのですか?ASCIIコード表など見てみると0x00~0x7Fの表はよく見かけます。ちなみに、このプログラムは海外で作られたようで、日本で言う「JIS」のようなコードなのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数308
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • redfox63
  • ベストアンサー率71% (1325/1856)

パリティが付いているのでそのようになります 最上位ビットをマスクして 下位7ビットを考えてみれば 0x31 0x39 0x3E 0x35となって 19.5のアスキーコードになると思います パリティとは簡単なエラー検出の機能で今回の場合 バイト単位で奇数のビットが立っているようにパリティを計算しています たとえば 0x31なら 2進数で表現すると 0011 0001 で立っているビット数は 3ですよね 0x35の場合 0011 0101となって 4ビット立っていることになります この場合 立っているビット奇数にするために 最上位ビットを立てて数を合わせるわけです そうなると 1011 0101 となって 0xB5になると言うわけです

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。よくわかりました。

関連するQ&A

  • X86アセンブラで 16進数を10進数のASCIIコードに変換する方法

    X86アセンブラで16進数から10進数のASCIIコードに変換する方法を模索しております。 例:  0x64(100d) 期待値:0x31 0x30 0x30 ("1","0","0"の3ByteのASCIIデータ) といった内容になります。 論理演算等で求める手法がございましたら、ご教授頂ければ幸いです。

  • シリアル通信チェックコードについて

    ある装置と自動化したいので、通信アナライザーを接続し、 通信ログをとりました。 しかし電文内に含まれている、チェックコード(チェックサム)の計算方法が どうしてもわかりません。 LRC、CRC8など試してみたのですが、 一致しないので、途方にくれております。 どなたかご教授いただけないでしょうか? 一番短い電文で以下となります。 -------- $(0x24) A(0x41) 0(0x30) '(0x60) <-CheckSum CR -------- ちなみに、装置には通信仕様書など一切の資料が無いため、 現状接続しているコントローラーにアナライザーを設置してログしています。

  • C#でのascii.getByte

    現在C#を用いて、機器と通信するプログラムを作成しています. byte[] get_data = System.Text.Encoding.ASCII.GetBytes(rcv_data); 上記のように受信したデータをbyteにエンコーディングしています. 0~127までの場合は問題がないのですが、例えばASCIIコードで134(† : 10000 0110)を受信した場合、byte配列に 63 と変換されて格納されます. 128以上の場合はどのようにすれば良いでしょうか? お分かりになられる方がいらっしゃいましたらご教授宜しく御願い致します.

  • JIS C 6226(旧JIS)コードをパソコンで認識表示したい。

    測定装置から旧JISコードでデータが出力されていると思われますが、これをハイパーターミナルやTera Termで認識する方法を紹介してもらったんですが日本語を認識できません。Tera Termは旧JISデータ対応かと思われたんですが結果的にはハイパーターミナルと同じでした。シリアルポートからの旧JISを認識して、SJISで表示させるプログラムは無いでしょうか?探してみたんですが見つかりませんでした。前に無理じゃないかと助言を頂きましたが・・・。 それか旧JISコードをJISで受けて、JISで文字化けしたしたテキストファイルから逆に旧JISコードを認識させ改めてSJISに変換させることは可能でしょうか?ハイパーターミナル等で文字化けしたテキストを変換できないでしょうか?教え下さい。

  • ASCIIコードとVisual Basic Editorのフォームについて

    仕事上、必要な為に攻略本などを片手にVisual Basic Editorを我流でプログラミングしている全くの素人です。 現在はVisual Basic Editorにフォームを挿入しテキストボックスを作成して、テキストボックスに入力した文字をSheet上の指定のセルに表示するようなプログラミングをしています。 しかし、ローマ字入力の場合は全く問題ないのですが、かな入力の場合( )カッコなど英数キーを一度押下しなければ入力できない文字については、テキストボックスのIMEコード設定をカナ入力の6番に設定している為、入力する事ができません。 1.テンキーの"/"、"*"キーに"("、" )"を割り当ててしのいでいます。一文字入力するごとに文字コードをASC関数で調査し"/"、"*"キーに該当する場合は「"それ以前に入力していた文字"+"("」を入力するプログラムにしています。しかし、この場合マウスでカーソルをインサートさせて途中入力した場合、カッコ以外の文字が入力される為完全とは言えません。また、カッコのみを入力するように指定すると、それまでテキストボックスに入力していた文字が消去されカッコのみが入力されてしまいます。良いプログラミングがありましたら、ご教授願います。 2.上記で英数キーを押下するとIMEコードが変換されるようにするのが良い方法だと思うのですがヘルプで検索してもASCIIコードが分からないので断念しました。キャリッジリターンは「13」NumLockは「144」までは分かったのですが文字キー以外のASCIIコードが掲載されている書物や方法がありましたら教えて下さい。宜しくお願い致します。

  • C# 文字コード変換

    お世話になります C#でプログラムを開発しております その際、ハードウェアへデータを送信するのですが 送信する文字列データをANKコードで送信しなければなりません。 そこで行き詰っているのですが ハードウェアへ ひらがなの 「あ」 を送信する際 「$"」 へ変換して送信する形です ・・・参考・・・ JIS0208コード表 http://ash.jp/code/codetbl2.htm ANKコード表 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/codes. … 以下がプログラムです      str = "あ";      byte[] data = Encoding.GetEncoding("EUC-JP").GetBytes(str);      ret = Encoding.GetEncoding("ASCII").GetString(data);      System.Console.WriteLine("ret:" + ret); 上記のコードでできると思ったのですが ret2:?? となってしまいます。 Javaではできたのですが・・・ いちおう成功したJavaのコードを載せます      str = "あ";      byte[] jis = str.getBytes("jis0208");      String strAscii = new String(jis, "ASCII");      System.out.println("strAscii:" + strAscii); 結果 $" Javaではjis0208でエンコードしてるところを C#ではEUC-JPで行っているのが原因だとは思うのですが ネットで調べてもjis0208はEUC-JPでエンコードするようにあります 私の理解が不足しているのでしょうか お分かりになる方、宜しくお願い致します。

  • 文字コードについて

    文字コードについて調べています!! ASCIIやunicode,jis,shift-jisなど色々なコードがあると思うのですが、 そもそも、パソコンには上記のコードや、表示⇒エンコード で選ぶことの 出来る、各文字コードの文字コード表が格納されているんでしょうか? ちょっとまだ勉強を始めたばかりで曖昧な質問になってしまったのですが、この疑問をどうして解消したくて… 色々と検索しても上記なようなことは探し出すことが出来なかったので どなたか教えてください!! よろしくお願いします!!

  • ソートの順番を変える処理

    現在、C言語の勉強をしています。 そこで、ソートについて皆さんのお知恵を拝借させてください。 文字コードで大小を比較してソートを行うにあたり、文字コードの大小とは違う方法でソートしたい場合はどのように行えば良いでしょうか? 例えばASCIIコードで 「*」は42(0x2a)、 「#」は35(0x23)、 数字の「0」は48(0x30)なので、 1:*111 2:#222 3:333 というデータがあった場合、文字コード順だと 1:#222 2:*111 3:333 という順になってしまいます。 それを 1:*111 2:#222 3:333 という順にソートするにはどうしたら良いのでしょうか? 実装方法が全く分からず、同じような質問が無いか探してみたんですが、見当たらなくて困っています・・・。 有識者の方、どうかよろしくお願いいたします。 また、以上のデータはASCIIですが、他にもSJISの文字(ひらがなや全角英数)を使用するデータのソートも同様の処理を行いたいと思っております。もし可能でしたら、少しだけでもアドバイスをお願いいたします。

  • HP-UXにてiconv変換できません。

    いつもお世話になっています。 当方、C言語初心者です。 環境 HP-UX 11.23 言語 C言語 他システムより接続された漢字コードに制御コードを付与し、JISコードに変更後、 JIS→SJISに変換するツールを開発しています。 たとえば 他システムより 0x3E3E 0x3B33(コードを調べると〔松山〕でした) 前後に制御コード付与すると 0x1B 0x24 0x42 0x3E3E 0x3B33 0x1B 0x28 0x4A JISで松山になります。 エディタで上記コードを読み込むと松山と表示されました。 ところが上記のJISを下記内容で実行させると、 入力値のコードがなんの変換もされず返却されました。 どこに不具合があって入力の内容(cvbuf)が出力の内容(ebuf)にそのまま返却されているのか調べることができませんでした。 何か見落としがあればご指摘のほど、宜しくお願い致します。 ※rlenをprintfしたところ正常返却されています。 ======================================================================= 呼び元は  cvkanj(0x3E3E 0x3B33の内容が入ったアドレス,2)  みないな感じです。 char *cvkanj(s, len) char *s; int *len; { char cvbuf[32768]; int rcd; staric char ebuf[32768] = {0}; static char ki[4] = { 0x1b, 0x24, 0x42, 0x00}; static char ko[4] = { 0x1b, 0x28, 0x4a, 0x00}; memcpy( cvbuf, ki, 3); memcpy( &cvbuf[3], s, len) memcpy( &cvbuf[len+3], ko, 3); cvbuf[len+6] = 0x00; rcd = convt(cvbuf, ebuf); return(&ebuf[0]); } int convt(pin, pout) char *pin; char *pout { iconv_t cd; size_t ilen; size_t olen; size_t rlen; ilen=strlen(pin); olen=32768; if ((cd = iconv_open("jis","sjis")) == (iconv_t)-1){ exit(-1); } rlen = iconv(cd, &pin, &ilen, &pout, &olen); iconv_close; return(0); }

  • 情報処理概論について。

    初めまして。今情報処理概論について勉強しています。 ちょっとわからない問題があるので教えてください。 式があって、式などもわかれば書いていただけるとありがたく思います。 1、(543)10をゾーン形式に変換し、そのビット列と16進数に変換した結果を示せ。ゾーン部はASCIIコードを使っているものと考える。 2、1つの画素の色をRGBそれぞれを8階調(3ビット)であらわした320*200の画像は何バイトになるか? 3、1フレームが上記の画像データであり、1秒間に30フレーム用いる動画データにおける60分のファイルの大きさは何Gバイトか? 後、ASCIIコードの表がわかりやすく載ってるHPのURLがありましたら教えて下さい。 この中でどれか一つでもわかるものがありましたら教えて下さい。よろしくお願いします。