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

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

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

Re[3]: betu 文字列をbyte型配列に変換した時の配列長


(過去ログ 48 を表示中)

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

■26280 / inTopicNo.1)  betu 文字列をbyte型配列に変換した時の配列長
  
□投稿者/ kakel (1回)-(2008/10/06(Mon) 14:54:44)

分類:[.NET 全般] 

VisualStudio2005のC#で開発しています。
文字列からbyte型配列に変換する際に、変換前と変換後で配列の長さが
変わってしまいます。
長さを変えずにできないものでしょうか?
以下の例は2つのファイルに記述したものですが、namespaceは同じです。

====Main.csで定義したCでいうグローバル変数みたいに使いまわす定数と変数====ここから
static public class GblConst
{
public const int MAX = 3;
:(省略)
public const int LEN = 256;
}

static public class GblVar
{
public class ProSet
{
static public byte bMax;
:(省略)
static public byte[] bPro = new byte[GblConst.LEN];
}
}
====Main.csで定義したCでいうグローバル変数みたいに使いまわす定数と変数====ここまで

====Conv.cs実際に処理が行われるソース=====================================ここから
private bool Conv()
{
:(省略)
szPro = @"C:\テスト\テスト.pro"; ←Debug:GblVar.ProSet.bProの配列長は256
GblVar.ProSet.bPro = Encoding.GetEncoding("Shift_JIS").GetBytes(szPro); ※ここで配列長が変化?

return true; ←Debug:GblVar.ProSet.bProの配列長が20
}
====Conv.cs実際に処理が行われるソース=====================================ここまで

仮にモジュール内に
byte [] aaa = new byte[256]; と定義し、
aaa = Encoding.GetEncoding("Shift_JIS").GetBytes(szPro);
とした場合には長さは256のままでした。

別ファイルのクラスを使いまわすことはできませんか?
引用返信 編集キー/
■26282 / inTopicNo.2)  Re[1]: betu 文字列をbyte型配列に変換した時の配列長
□投稿者/ kakel (2回)-(2008/10/06(Mon) 15:34:34)
すいません。タイトルに「別ファイルで〜」をつけようとしたら投稿されちゃいました。
編集コードも忘れていまして;;
タイトル修正と内容の追記です。

タイトル修正:別ファイルで定義したクラスを使用した場合の文字列をbyte型配列に変換した時の配列長

内容の追記です。
誤:別ファイルのクラスを使いまわすことはできませんか?

この処理の後にバイナリファイルに書込みをしたいのですが、

fs.Write(GblVar.ProSet.bPro, 0, GblVar.ProSet.bPro.Length);
とすると配列長が変化しているので、固定長で書込みができなくて
こまっております。
また、
fs.Write(GblVar.ProSet.bPro, 0, 256);とすると、
「配列のオフセット及び長さが範囲を超えているか、カウンタが〜」のエラーがでてしまいます。

よろしくお願いします。
引用返信 編集キー/
■26285 / inTopicNo.3)  Re[2]: betu 文字列をbyte型配列に変換した時の配列長
□投稿者/ kakel (3回)-(2008/10/06(Mon) 16:09:44)
No26282 (kakel さん) に返信
> すいません。タイトルに「別ファイルで〜」をつけようとしたら投稿されちゃいました。
> 編集コードも忘れていまして;;
> タイトル修正と内容の追記です。
>
> タイトル修正:別ファイルで定義したクラスを使用した場合の文字列をbyte型配列に変換した時の配列長
>
> 内容の追記です。
> 誤:別ファイルのクラスを使いまわすことはできませんか?
>
> この処理の後にバイナリファイルに書込みをしたいのですが、
>
> fs.Write(GblVar.ProSet.bPro, 0, GblVar.ProSet.bPro.Length);
> とすると配列長が変化しているので、固定長で書込みができなくて
> こまっております。
> また、
> fs.Write(GblVar.ProSet.bPro, 0, 256);とすると、
> 「配列のオフセット及び長さが範囲を超えているか、カウンタが〜」のエラーがでてしまいます。
>
> よろしくお願いします。
引用返信 編集キー/
■26287 / inTopicNo.4)  Re[3]: betu 文字列をbyte型配列に変換した時の配列長
□投稿者/ kakel (4回)-(2008/10/06(Mon) 16:10:50)
訂正しようとしたら、ごちゃごちゃになってしまったので、
解決済みとさせて頂き、新規にて投稿させて頂きます。
お騒がせしました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -