2016-06-15 10 views
2

私が望む方法で値を書くことができません。値のデータを書き込む

私が書く場合は基本的に、私は文字の間にスペースだろう分割するだろうと思った何を「1 5 A」

を言うことができます。

しかし実際には、すべての文字/位置が1つのデータとして認識されます。つまり、「49 53 53 65」の代わりに「49 32 53 32 65」と書かれています。 ASCIIテーブルに基づいています。私は何が欠けていますか?

byte[] writeValue = text.Split(' ').Where(token =>  
!string.IsNullOrEmpty(token)).Select(token => Convert.ToByte(token, 16)).ToArray(); 

ソリューション:

byte[] writeValue = text.Split(' ').Select(s => Convert.ToByte(s)).ToArray(); 
+0

の[]バイトで?最後に '48' - >' 0'と表示されますか? –

+0

@KevinWallis私の悪い、正しいものに出力を変更しました。ありがとう! –

答えて

2

は、あなたがこのようにそれを試したことがありますか?

byte[] writeValue = text 
    .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 
    .Select(token => Convert.ToByte(token, 16)) 
    .ToArray(); 
+0

これは試してみるとエラーです。引数2: "System.StringSplitOptions"から "char"に変換できません –

+0

@ Justin.Tコードを修正しました。 'char'の代わりに' char [] 'を使う必要があります –

+0

解決策を見つけました。質問自体に掲載されています。それでも私はあなたの作品もかなり –

2

IsNullOrWhiteSpaceをお試しください...

byte[] writeValue = text.Split(' ').Where(token =>  
!string.IsNullOrWhiteSpace(token)).Select(token => Convert.ToByte(token,16)).ToArray(); 

私は誤解とおそらくまだやります!これはあなたが探しているものですか?テキスト= "1 5 A" の

byte[] writeValue = text.ToCharArray().Where(token => 
char.IsLetterOrDigit(token)).Select(token => Convert.ToByte(token)).ToArray(); 

6つの番号が存在する理由は、結果は0x31 0x35の0x41から

+0

それはすぐに "文字列"として書き込み、それは変換することはできませんでした。だから私は例えば1 5 Aと書く。それは115として保存されます。 –

+0

解決策を見つけました。質問自体に掲載されています。私はあなたの作品もかなり好きなので、まだ+1 –

0
string text = "0 1 2 3"; 
     string[] textAfter = text.Split(' '); 
     byte[] writeValue = new byte[textAfter.Length]; 
     for (int i = 0; i < textAfter.Length; i++) 
     { 
      writeValue[i] = (byte)Convert.ToChar(textAfter[i]); 
     } 
関連する問題