文字列と数値型の混在しているバイナリの作成を行おうと思っているのですが
以下のようなコードでStringのエンディアンが反転してしまいます。
リトルエンディアンが期待値となります。
c#
1byte[] GetByte(object obj, int count) 2{ 3 var type = obj.GetType(); 4 List<byte> list = new List<byte>(); 5 int val; 6 7 if(type.Equals(typeof(string))) 8 { 9 // この時点ではリトルエンディアン 10 val = BitConverter.ToInt32(System.Text.Encoding.ASCII.GetBytes((string)obj), 0); 11 } 12 else 13 { 14 // string出ない場合はint 15 val = (int)target; 16 } 17 18 for(int i = 0; i < count; i++) 19 { 20 // 下位ビットから順に格納 21 list.Add((byte)(val >> 8 * i)); 22 } 23 return list.ToArray(); 24}
一度System.Text.Encoding.ASCII.GetBytes()
で取得したバイナリをその後のfor文
で下位ビットから格納しているのが問題なのはわかっているのですが自分の思いつく解決策がSystem.Text.Encoding.ASCII.GetBytes()
で取得したリトルエンディアンの値をビッグエンディアンに変換して下位ビットから格納するくらいしか思いつかず非常に煩雑な感じがします。
なにかいい解決策はないでしょうか
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/02 02:07 編集
2018/03/02 02:12 編集
退会済みユーザー
2018/03/02 02:13
2018/03/02 02:21
2018/03/02 02:36 編集
退会済みユーザー
2018/03/02 02:47
2018/03/02 02:50
退会済みユーザー
2018/03/02 02:52
2018/03/02 03:00
2018/03/02 03:00