###前提・実現したいこと
こんにちは。いつもたいへんお世話になります。
byte[] intの変換で、コンソールアプリケーションを作っていろいろ試しています。
そこでいろいろ疑問が出てきました。
C#
1 byte[] bytes = { 5, 12, 24, 40, 58 }; 2 var size = 16777216 * bytes[0] + 65536 * bytes[1] + 256 * bytes[2] + bytes[3];//Q1 3 Console.WriteLine("convert1600 size="+size); 4 5 byte[] size1 = BitConverter.GetBytes(size / 16777216);//Q2, Q3 6 byte[] size2 = BitConverter.GetBytes(size % 16777216 / 65536); 7 byte[] size3 = BitConverter.GetBytes(size % 16777216 % 65536 / 256); 8 byte[] size4 = BitConverter.GetBytes(size % 16777216 % 65536 % 256); 9 10 11 List<byte> afterbytes = new List<byte>(); 12 afterbytes.AddRange(size1); 13 afterbytes.AddRange(size2); 14 afterbytes.AddRange(size3); 15 afterbytes.AddRange(size4); 16 17 List<byte> afterbytes2 = new List<byte>(); 18 afterbytes2.Add(size1[0]); 19 afterbytes2.Add(size2[0]); 20 afterbytes2.Add(size3[0]); 21 afterbytes2.Add(size4[0]); 22 23 var sizebyte1 = size / 16777216; 24 var sizebyte2= size % 16777216 / 65536; 25 var sizebyte3= size % 16777216 % 65536 / 256; 26 var sizebyte4= size % 16777216 % 65536 % 256; 27 28 List<byte> afterbytes3 = new List<byte>(); 29 //afterbytes3.Add(sizebyte1);//Q4 30 //afterbytes3.Add(sizebyte2); 31 //afterbytes3.Add(sizebyte3); 32 //afterbytes3.Add(sizebyte4); 33 34 byte[] bytesarray = bytes.ToArray(); 35 int bitconvertersize32 = BitConverter.ToInt32(bytesarray, 0); 36 Console.WriteLine("int bitconvertersize=" + bitconvertersize32); 37 byte[] bytesbybitconverter1 = BitConverter.GetBytes(bitconvertersize32);//Q5, Q6,Q7 38 39 byte[] bytesbybitconverter = BitConverter.GetBytes(size); 40
###発生している問題/疑問
Q1)16777216や65536や256はどこから出てきたのか?
Q2)intをGetBytesすると、なぜ4つずつの組の配列になるのか?
Q3)組の配列の[1],[2],[3]は0,0,0だがつねに0なのか?
Q4)List<byte>にintをAddできないが、intをbyteに変更する方法は? BitConverterを使う?
Q5)BitConverter.GetBytesを使うと16777216や65536や256はどこに消えるのか?
Q6)ひょっとしてbytesはつねに4つの組の配列であり、16777216や65536や256がデフォルトなのか?
Q7)戻すと配列は、{5,12,24,40}となるが58はどこに消えたのか?
4つずつなら次のようにすればどうかと思ったが、これでも後半の58,63,71.86はなくなる。
List<byte> bytes = new List<byte>({5,12,24,40,58,63,71,86});
お知恵拝借したいです。
###補足情報(言語/FW/ツール等のバージョンなど)
Windows10 Home 1709 64bit
Microsoft Visual Studio Community 2017
Version 15.1 (26403.3) Release
VisualStudio.15.Release/15.1.0+26403.3
Microsoft .NET Framework
Version 4.7.02556
インストールされているバージョン:Community
Visual C# 2017 00369-60000-00001-AA631
回答3件
あなたの回答
tips
プレビュー