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

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

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

Re[8]: バイト配列での分割


(過去ログ 16 を表示中)

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

■6062 / inTopicNo.1)  バイト配列での分割
  
□投稿者/ HHH (2回)-(2007/07/31(Tue) 11:00:29)

分類:[C#] 

C#を使っています


長いbyte配列を指定したbyte数ごとに区切って表示させたいのですが、どのようにすればよいのでしょうか?

100byteの配列を、2byte,3byte,5byte,7byte,8byte,5byte,10byte,20byte,40byte で計100byteと言った感じにしたいんです。

ご存知の方、教えてください。
引用返信 編集キー/
■6063 / inTopicNo.2)  Re[1]: バイト配列での分割
□投稿者/ 囚人 (123回)-(2007/07/31(Tue) 11:17:24)
分割のルールがないのであれば、単純に手作業で分割するしかないのでは?
(実はルールのある数列なのかどうかは判断つきませんでした)
引用返信 編集キー/
■6065 / inTopicNo.3)  Re[2]: バイト配列での分割
□投稿者/ επιστημη (568回)-(2007/07/31(Tue) 11:39:28)
επιστημη さんの Web サイト
stringを分割してみた。ちょちょいといじればbyte[] に使えます。

using System;
using System.Collections.Generic;

public class Program {

  public static IEnumerable<string> split(string str, params int[] col) {
    int pos = 0;
    foreach ( int c in col ) {
      yield return str.Substring(pos, c);
      pos += c;
    }
  }

  public static void Main() {
    string input = "abcdefghijklmnopqrstuvwxy" +
                   "ABCDEFGHIJKLMNOPQRSTUVWXY" +
                   "abcdefghijklmnopqrstuvwxy" + 
                   "ABCDEFGHIJKLMNOPQRSTUVWXY";
    foreach ( string item in split(input, new int[] {2,3,5,7,8,5,10,20,40}) ) {
      System.Console.WriteLine("[{0}]", item);
    }
  }
}

引用返信 編集キー/
■6067 / inTopicNo.4)  Re[3]: バイト配列での分割
□投稿者/ ぽぴ王子 (245回)-(2007/07/31(Tue) 12:04:51)
ぽぴ王子 さんの Web サイト
とりあえずこれかな?と思ったのは、Array.Copy メソッド。

http://msdn2.microsoft.com/ja-jp/library/z50k9bft%28VS.80%29.aspx

分割する単位に関しては、囚人さんと同じくルールがあるようには見えなかったので
自分で指定するしかなさそうですね。
引用返信 編集キー/
■6103 / inTopicNo.5)  Re[4]: バイト配列での分割
□投稿者/ 片桐 (38回)-(2007/08/01(Wed) 10:16:12)
.NET Freamework 2.0 が使えるなら、ですが

ちょうど今、配列を分割して処理する部分作ってたので……

arrayクラスのconstrainedcopyメソッドとか

http://msdn2.microsoft.com/ja-jp/library/system.array.constrainedcopy(VS.80).aspx
引用返信 編集キー/
■6114 / inTopicNo.6)  Re[5]: バイト配列での分割
□投稿者/ ぽぴ王子 (248回)-(2007/08/01(Wed) 11:50:41)
ぽぴ王子 さんの Web サイト
No6103 (片桐 さん) に返信

> arrayクラスのconstrainedcopyメソッドとか
>
> http://msdn2.microsoft.com/ja-jp/library/system.array.constrainedcopy(VS.80).aspx

これって Array.Copy メソッドとどの辺が違うんでしょ。
いや、僕も紹介したときに見つけてたんだけど、なんか同じように見えたんで簡単そうな Array.Copy の方を
勧めてみたんですが、違いがわかるなら知っておきたいなと。
引用返信 編集キー/
■6116 / inTopicNo.7)  Re[6]: バイト配列での分割
□投稿者/ 囚人 (124回)-(2007/08/01(Wed) 12:01:22)
>これって Array.Copy メソッドとどの辺が違うんでしょ。
>いや、僕も紹介したときに見つけてたんだけど、なんか同じように見えたんで簡単そうな Array.Copy の方を
>勧めてみたんですが、違いがわかるなら知っておきたいなと。

CER 内で実行できるとありますね。中途半端な状態でコピー処理が失敗した場合も安全だよ〜って事なんでしょうね。
引用返信 編集キー/
■6128 / inTopicNo.8)  Re[7]: バイト配列での分割
□投稿者/ ぽぴ王子 (249回)-(2007/08/01(Wed) 15:52:59)
ぽぴ王子 さんの Web サイト
No6116 (囚人 さん) に返信

囚人さんありがとうございます。

うおお、CER って初めて聞きました(ダメすぎ?)
ふむふむ。
> コピーが完全に成功しない限り、変更は一切適用されません。
ってところが結構気になってたんですが、その辺でしょうか。

逆に言うとそれ以外に違いはない?
いやまあ、中途半端にメモリ破壊されても困るわけで、たしかにこういうのが
あると便利ではありますね。

っていうかスレ主さんが見あたらないですが、自己解決しちゃったのかしら。
引用返信 編集キー/
■6129 / inTopicNo.9)  Re[8]: バイト配列での分割
□投稿者/ 囚人 (125回)-(2007/08/01(Wed) 16:21:12)
スレッドをいきなり止めたり AppDomain を強制破棄した際、CERでない finally ブロックやファイナライザが必ずしも実行されるとは限らないので、ミッションクリティカルな CLR ホストプロセス(まぁ SQL Server の事)は CER のような機構が必要なようです。

http://msdn2.microsoft.com/ja-jp/library/ms228973(VS.80).aspx
とか
System.Runtime.ConstrainedExecution 名前空間
とかを参照して下さい。

脱線失礼。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -