![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 数学 次の問題についてご教授願いします。 3点z=0 , z=-1 , z=i をそれぞれω=0 , ω= 4 2023/05/23 20:13
- 数学 f(x)=1(0<x<1),0(それ以外)とするとき、 fのフーリエ変換とf×fのフーリエ変換を求め 3 2022/12/18 18:18
- Word(ワード) MSオフィスのIMEは以前より文字変換能力が低下していませんか?(ATOKを買うべき?) 4 2023/08/03 09:15
- その他(プログラミング・Web制作) 変換のプログラムを教えてください。 6 2023/07/01 09:57
- 画像編集・動画編集・音楽編集 無料の動画編集ソフトで日本語の物を教えて下さい。 1 2022/06/29 17:14
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- Android(アンドロイド) AndroidのSHARP AQUAS sense7使ってます。予測変換をした時にこうなります。 単 3 2023/03/20 17:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgets関数を使用したときの文字...
-
fgetsで拾われる改行文字を削除...
-
CStringのFindで文字列検索を行...
-
fgetsでバッファ残留文字列を無...
-
単語数のカウントについて
-
反転した数値を表示させるやり方
-
sscanfとscanfの違いがよくわか...
-
全角文字のチェック
-
C言語で16進数文字列から16進数...
-
sscanfでフォーマットに合って...
-
ファイルを読み込みテキストフ...
-
c言語プログラミングHELP!
-
小文字のみを数える方法
-
itoaわかりません
-
c言語について array[i]-‘0’ こ...
-
C言語、単語ごとに改行したい
-
数字のINPUT
-
gets fgetsについて
-
”123456”といった整数を文字列...
-
Cで「大文字、小文字の判定」は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
fgets関数を使用したときの文字...
-
反転した数値を表示させるやり方
-
Cで「大文字、小文字の判定」は...
-
charと%c , %s の関係について
-
C言語のステップ数をカウントす...
-
strstrを利用しない文字列検索...
-
C言語 空白の行(改行のみ)が...
-
fgetsで拾われる改行文字を削除...
-
文字列中に含まれる文字の個数...
-
C言語で16進数文字列から16進数...
-
itoaわかりません
-
文の意味
-
C言語 strlen 再入力を促す
-
fgetsでバッファ残留文字列を無...
-
全角文字のチェック
-
C++
-
ブランクのチェック
-
C言語、単語ごとに改行したい
おすすめ情報