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

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

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

Re[1]: char型からbyte型に変換する方法


(過去ログ 74 を表示中)

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

■43050 / inTopicNo.1)  char型からbyte型に変換する方法
  
□投稿者/ マツダ (4回)-(2009/10/28(Wed) 00:59:49)

分類:[Java] 

2009/10/28(Wed) 01:26:54 編集(投稿者)

いつもお世話になっております。
前回は助けて頂き、まことに助かりました。

>>http://bbs.wankuma.com/index.cgi?mode=al2&namber=43019
前回のトピックで、0x8192の文字(£)をファイルに書き込む方法を
教えていただきました。しかしながらcharに格納している0x8192を
byte型に変換することができません。
(色々と探しているのですが、charからbyteの変換する方法が見つからず
キャスト変換してもダメでした。)

形としては↓になるのが理想的なのですが。。。

・0x8192なら
char a =0x8192;
//aが2バイトコードなら分割して以下のようにbyte配列に格納
byte[i]=0x81;
byte[i+1]=:0x92;

・0xA7なら
//aが1バイトコードなら以下のようにbyte配列に格納
byte[i]:0xA7
byte[i+1]:\0

#aがどんな文字でもbyte配列に正しく格納できることが理想です。


以上、何度も恐縮ですがよろしくお願いいたします。

引用返信 編集キー/
■43057 / inTopicNo.2)  Re[1]: char型からbyte型に変換する方法
□投稿者/ 魔界の仮面弁士 (1366回)-(2009/10/28(Wed) 10:12:23)
2009/10/28(Wed) 10:39:55 編集(投稿者)
No43050 (マツダ さん) に返信
> char a =0x8192;
> byte[i]=0x81;
> byte[i+1]=:0x92;

> ・0xA7なら
> byte[i]:0xA7
> byte[i+1]:\0

エンディアンが曖昧なように見えます。

0x8192 は、81,92 と分割し、
0x00A7 は、A7,00 と分割するのですか?


で、とりあえず J# 2005 の場合には、下記のように書く事が出来ました。
java のコードを書いたのは初めてなので、これが適切であるかどうかの判断は任せますが。

public static byte[] toBytes(char c)
{
  int i = (int)c;
  //return new byte[] { (byte)(i & 0x00ff), (byte)(i >> 8) };
  return new byte[] { (byte)(i >> 8), (byte)(i & 0x00ff) };
}

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -