回答編集履歴
2
修正
answer
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
###追記
|
|
33
33
|
特に意味はありませんが、LINQ と C#7 の新機能である型スイッチを使った方法です。
|
|
34
34
|
なお `new byte[32]` については恐らくバッファを確保するつもりだっただけだと見てどちらのソースでも無視しています。
|
|
35
|
-
必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `.Concat()` を使って追加できます。
|
|
35
|
+
必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `Enumerable.Repeat((byte)0, 32).Concat()` を使って追加できます。
|
|
36
36
|
|
|
37
37
|
```C#
|
|
38
38
|
byte[] toByte()
|
1
追記
answer
CHANGED
|
@@ -27,4 +27,29 @@
|
|
|
27
27
|
}
|
|
28
28
|
return ret.ToArray();
|
|
29
29
|
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
###追記
|
|
33
|
+
特に意味はありませんが、LINQ と C#7 の新機能である型スイッチを使った方法です。
|
|
34
|
+
なお `new byte[32]` については恐らくバッファを確保するつもりだっただけだと見てどちらのソースでも無視しています。
|
|
35
|
+
必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `.Concat()` を使って追加できます。
|
|
36
|
+
|
|
37
|
+
```C#
|
|
38
|
+
byte[] toByte()
|
|
39
|
+
{
|
|
40
|
+
return dictionary
|
|
41
|
+
.SelectMany<KeyValuePair<string, object>, byte>(x =>
|
|
42
|
+
{
|
|
43
|
+
switch (x.Value)
|
|
44
|
+
{
|
|
45
|
+
case null:
|
|
46
|
+
return Enumerable.Empty<byte>();
|
|
47
|
+
case string value:
|
|
48
|
+
return System.Text.Encoding.ASCII.GetBytes(value);
|
|
49
|
+
default:
|
|
50
|
+
return BitConverter.GetBytes((dynamic)x.Value);
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
.ToArray();
|
|
54
|
+
}
|
|
30
55
|
```
|