No.5ベストアンサー
- 回答日時:
こういう質問をする場合、
--------------
char * buff = "あいうえお";
があります。
漢字コードは「シフトJIS」で、メモリ中には、16進コードで「82 A0 82 A2 82 A4 82 A6 82 A8 00」と入っているとします。
シフトJIS漢字の第1バイトが左、第2バイトが右です。
終端文字も入っています。
文字列に半角文字は入りません。半角カナも入りません。全角の2バイト文字しか入って来ない事とします。
それを「16進数表記した文字列」に変換したいですが、どうすれば、よろしいですか?
結果は
"82A082A282A482A682A8"
と言う文字列で欲しいです。
文字列の終端には「\0」つまり「終端文字」も欲しいです。
バイトの区切りに空白などは必要ありません。隙間なく並んでいれば良いです。
16進数の英字A~Fは「大文字」で欲しいです。
16進コードでメモリ中に「38 32 41 30 38 32 41 32 38 32 41 34 38 32 41 36 38 32 41 38 00」と並んでいるイメージです。
--------------
と、質問しましょう。
回答者は「あいうえお、と言われても、漢字コードは何?JIS?シフトJIS?EUC?UTF-8?漢字コード体系が何なのか、書いてないと判らない」です。
「16進数に変換したい」と言っても「じゃあ、具体的に、どういう結果が欲しいの?AからFは大文字?小文字?どっち?書いてないと判らない」です。
そういう「細かい仕様」をハッキリ書かないから、ANo1やANo2のような「ツッコミ」が入るのです。
この回答の補足説明で、上記のような「細かい仕様」を明記して下さい。そうすれば、貴方が欲しい回答が得られるでしょう。
No.4
- 回答日時:
>char * buff = "あいうえお";があります。
>それを16進数に変換したいですが、どうすれば、よろしいですか?
(#1 補足)
>逆に、16進数の文字列が与えられたら、それを日本語にしたいです。
「2バイト文字」文字列を、1つの「数」に「変換」するのではなく、
・1つの「2バイト文字」コードを16進4桁「文字列」とし、それらを連結。
と質問本文主旨を「変更・修正」したと解釈してのアドバイス。
「解釈」に誤りがありましたら以降、無視して下さい。
++++++++++++++++++++++++++++++++++++++++++++++++
"あ" は 82A0, 順に 82A2, ・・だから "82A082A282A482A682A8" といった「文字列」を作るのはいたって簡単↓。
(BorlandC++5.5.1)
http://www.k-cube.co.jp/wakaba/server/format.html
逆の、"82A082A282A482A682A8" を "あいうえお" と2バイト文字「表記」するには、下のソースの後半、代入部分を参考にして下さい。
ヒント:「文字列」"82" と "A0" を「数」0x82 と 0xA0 にする。
http://e-words.jp/p/r-ascii.html
#include <stdio.h>
void main()
{
unsigned char cStr[ 16 ] = "あいうえお";
unsigned char *p = cStr;
char c16[ 32 ];
int nn = 0;
while( *p ){
sprintf( &c16[ nn ], "%02X", *p );
nn += 2;
p++;
}
printf( "%s\n", c16 );
printf( "%s\n", cStr );
cStr[ 1 ] = 0xA8;
cStr[ 3 ] = 0xA6;
cStr[ 5 ] = 0xA4;
cStr[ 7 ] = 0xA2;
cStr[ 9 ] = 0xA0;
printf( "%s\n", cStr );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。
No.3
- 回答日時:
文字コードの数値を16進数型式で表示したいという意味でしょうか
for (i = 0; buf[ i ] != 0; i++)
{
printf("%02X ", (unsigned char)buf[ i ]);
}
No.2
- 回答日時:
No1氏の質問を言い換えてみます。
”あいうえお”からどのような十六進がほしいのですか。
文字列を種にした乱数としての十六進数なのか、ビットマップファイルに出力した後のファイルダンプとしてなのか、EBCDICコードで表現したときの文字コードなのか。"あ"→0と見なしての変換なのか。
情報が少なすぎてどうしようもありません。
この回答への補足
すみませんが、以上のような状況じゃないと思いますが、
Stirlingというエディタのように、日本語を16進数(二進数)に変換と
16進数(二進数)を日本語に変換するようなイメージですが、
あまり、わかりませんが、乱数とファイルダンプなどとは、
関係があるでしょうか?
ご指摘をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
エディットボックスに入力され...
-
教えて下さい 文字数最大制限2...
-
fgetsとsscanfを使って一行から...
-
Cで「大文字、小文字の判定」は...
-
c言語のプログラミングでキーボ...
-
文字列から数字への変換
-
2÷3などの余りについて
-
C言語 エラーの原因がわからな...
-
C言語初心者です、、、お助けく...
-
2番以降って2番も含まれますか...
-
複数ファイルの同時読み込みの...
-
コンパイルエラーについて
-
プログラムでの数字につく”f”の...
-
信頼区間の1.96や1.65ってどこ...
-
2の補数を計算するプログラム
-
java初心者です。入力されたの...
-
std::set<int> で、ある値が何...
-
printf、最大値の出し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sscanfとscanfの違いがよくわか...
-
CStringのFindで文字列検索を行...
-
fgets関数を使用したときの文字...
-
charと%c , %s の関係について
-
Cで「大文字、小文字の判定」は...
-
itoaわかりません
-
C言語のステップ数をカウントす...
-
文の意味
-
C言語で16進数文字列から16進数...
-
単語数のカウントについて
-
反転した数値を表示させるやり方
-
C言語 空白の行(改行のみ)が...
-
strstrを利用しない文字列検索...
-
fgetsで拾われる改行文字を削除...
-
C言語の課題です
-
[Java]文字列分割
-
教えていただけませんか?C言語...
-
ある文字列で2回目3回目に出現...
-
文字列の途中に「0」がある場...
-
初歩的なプログラムなんですが...
おすすめ情報