DOBON.NET DOBON.NETプログラミング掲示板過去ログ

StringをByte配列にする方法

分類:[.NET]

String a = "あいうえお"

と代入してこれを

Byte byte[]
このByteの配列型に代入したいのですが
どうすればいいでしょうか

Byte byte[] = a;

これだとだめなので教えてください

C#ですFrameworkは2.0です
  • 題名: Re[1]: StringをByte配列にする方法
  • 著者: はいこーん
  • 日時: 2006/08/03 20:03:05
  • ID: 16973
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
Encodingクラスのメンバを見よう。
■No16972に返信(mimiさんの記事)
こんにちは
これが参考になると思います
文字列を文字コードを指定してバイト型配列のデータに変換する
http://dobon.net/vb/dotnet/string/getencoding.html
ありがとうございます
あとあるバイト数から
バイト配列に文字列を代入したいのですが
どうすればいいでしょうか
下のだとmapdataの指定したバイト目から
文字列を代入できません
たとえばバイト配列の5バイト目から
文字列を代入するとかがしたいのです。

String aa = "あいうえお";
String bb = "かきくけこ";

//文字列をバイト配列型に入れる
byte[] mapdata= Encoding.GetEncoding(932).GetBytes(aa);

offset += aa.Length;

mapdata[offset] = Encoding.GetEncoding(932).GetBytes(bb);
こんにちは。

「逆に考えるんだ。バイト配列の5バイト目から代入するのではなく
 バイト配列に変換したものを目的のバイト配列(の5バイト目から)にコピーすると考えるんだ」

と、ジョースター卿も言っています(言ってません)。
配列のコピーというキーワードはぽぴ王子さんからアドバイスがあるのでおいといて、

> offset += aa.Length;

aa.Lengthは文字数なのでここでは5ですが、
Shift_JISでのバイト数で言えば、5文字x2(全角1文字2バイト)の10という
値が必要なのではありませんか?
こんにちは。

> aa.Lengthは文字数なのでここでは5ですが、
> Shift_JISでのバイト数で言えば、5文字x2(全角1文字2バイト)の10という
> 値が必要なのではありませんか?

あ、本当ですね。
実際のところ何がしたいのかがちょっと見えてないので、どうアドバ
イスしてよいものやら。

mapdata[] に bb をバイト配列にしたものを連結したいのか
mapdata[] の途中からのデータを別のもので上書きしたいのか

前者だったら aa+bb をバイト配列にした方が簡単だし。
後者ならジョースター卿の言うとおり、一度バイト配列を作ってから
目的のバイト配列にコピーするのがいいのだろうけど、シフトJISの
分かれ目に突っ込んでよくわからないものになっちゃって「あんまり
だあああぁぁぁ」と嘆くことになると予想。
(その前に mapdata[] の範囲を超えちゃって ArgumentException
あたりが出そう)

DOBON.NET | プログラミング道 | プログラミング掲示板