| ■No99413 (furu さん) に返信 > ■No99411 (kiku さん) に返信 >> C#のソースですが、サンプル書いてみました。 > 普段使わないけどVB.NETで書いてみました。
3 バイトの配列を 12bit ごとに区切って、 2 個の 2 バイト配列に分解する関数を作ってみました。
Sub Main() Dim q = BitSplitter(&HAB, &HCD, &HEF) Console.WriteLine(BitConverter.ToString(q.Left)) 'AB-C0 Console.WriteLine(BitConverter.ToString(q.Right)) 'DE-F0 Console.WriteLine()
q = BitSplitter(&H12, &H34, &H56) Console.WriteLine(BitConverter.ToString(q.Left)) '12-30 Console.WriteLine(BitConverter.ToString(q.Right)) '45-60 Console.WriteLine()
Dim bin3 As Byte() = {&H22, &H3, &H31} q = BitSplitter(bin3) Console.WriteLine(BitConverter.ToString(q.Left)) '22-00 Console.WriteLine(BitConverter.ToString(q.Right)) '33-10 Console.WriteLine()
Console.ReadKey() End Sub
Private Function BitSplitter(binary As Byte()) As (Left As Byte(), Right As Byte()) Return BitSplitter(binary(0), binary(1), binary(2)) End Function
Private Function BitSplitter(a As Byte, b As Byte, c As Byte) As (Left As Byte(), Right As Byte()) Return ({a, CByte(b And &HF0)}, {CByte((b << 4) Or (c >> 4)), c << 4}) End Function |