From e3a6ec0aad7797a33ec91f47395f6aceb196d04b Mon Sep 17 00:00:00 2001 From: Vladimir Pecanac Date: Tue, 15 Sep 2026 15:34:17 +0200 Subject: [PATCH] Convert byte array to hex: retarget net10.0, ToHexStringLower, namespace fix Retargets all four projects in collections-arrays/ConvertByteArrayToHex from net7.0 to net10.0 and moves the package set forward: xunit 2.9.3, xunit.runner.visualstudio 4.0.0, Microsoft.NET.Test.Sdk 18.10.1, coverlet.collector 10.0.1, BenchmarkDotNet 0.15.8. Drops the CommunityToolkit.HighPerformance reference from the benchmark project, which no source file in the folder uses. ToHexWithConvert() now calls Convert.ToHexStringLower() for the lowercase case instead of Convert.ToHexString(...).ToLowerInvariant(), which saves a second string allocation, and the lower benchmark class gains a method that measures the old path beside the new one. Fixes the namespace typo in LookupTables.cs (ConvertByteArrayHexLibrary, missing the To) and drops both stray using directives it forced, in ConversionHelpers.cs and in ConvertByteArrayLookupTablesTests.cs. Build: 0 warnings, 0 errors. Tests: 69 of 69 passing on SDK 10.0.302 / runtime 10.0.10. --- .../ConvertByteArrayToHexBenchmarks.csproj | 5 ++--- .../ConvertByteArrayToHexLowerBenchmarks.cs | 5 +++++ .../ConvertByteArrayToHexConsole.csproj | 2 +- .../ConvertByteArrayToHexLibrary/ConversionHelpers.cs | 5 +---- .../ConvertByteArrayToHexLibrary.csproj | 2 +- .../src/ConvertByteArrayToHexLibrary/LookupTables.cs | 2 +- .../ConvertByteArrayLookupTablesTests.cs | 2 +- .../ConvertByteArrayToHexUnitTests.csproj | 10 +++++----- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexBenchmarks.csproj b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexBenchmarks.csproj index 6d87d6dbf4..1150c235f9 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexBenchmarks.csproj +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexBenchmarks.csproj @@ -2,14 +2,13 @@ Exe - net7.0 + net10.0 enable enable - - + diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexLowerBenchmarks.cs b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexLowerBenchmarks.cs index 34015e7640..b38e997ad4 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexLowerBenchmarks.cs +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexBenchmark/ConvertByteArrayToHexLowerBenchmarks.cs @@ -71,4 +71,9 @@ public string ConvertToLowerHexUsingLookupNetStandard20(byte[] source) => [ArgumentsSource(nameof(ArrayData))] public string ConvertToLowerHexUsingConvert(byte[] source) => ConversionHelpers.ToHexWithConvert(source, true); + + [Benchmark] + [ArgumentsSource(nameof(ArrayData))] + public string ConvertToLowerHexUsingConvertAndToLowerInvariant(byte[] source) => + Convert.ToHexString(source).ToLowerInvariant(); } \ No newline at end of file diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexConsole/ConvertByteArrayToHexConsole.csproj b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexConsole/ConvertByteArrayToHexConsole.csproj index c01750af3b..d69ef857f5 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexConsole/ConvertByteArrayToHexConsole.csproj +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexConsole/ConvertByteArrayToHexConsole.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net10.0 enable enable diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConversionHelpers.cs b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConversionHelpers.cs index efbc341a25..d79b7b5bdc 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConversionHelpers.cs +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConversionHelpers.cs @@ -1,7 +1,6 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; -using ConvertByteArrayHexLibrary; namespace ConvertByteArrayToHexLibrary; @@ -160,8 +159,6 @@ public static unsafe string ToHexWithLookupNetStandard20(byte[] source, bool low public static string ToHexWithConvert(ReadOnlySpan source, bool lowercase = false) { - var result = Convert.ToHexString(source); - - return lowercase ? result.ToLowerInvariant() : result; + return lowercase ? Convert.ToHexStringLower(source) : Convert.ToHexString(source); } } \ No newline at end of file diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConvertByteArrayToHexLibrary.csproj b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConvertByteArrayToHexLibrary.csproj index 748a4b14b4..389972111a 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConvertByteArrayToHexLibrary.csproj +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/ConvertByteArrayToHexLibrary.csproj @@ -1,7 +1,7 @@  - net7.0 + net10.0 enable enable true diff --git a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/LookupTables.cs b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/LookupTables.cs index debe917292..e6a27b620c 100644 --- a/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/LookupTables.cs +++ b/collections-arrays/ConvertByteArrayToHex/src/ConvertByteArrayToHexLibrary/LookupTables.cs @@ -1,4 +1,4 @@ -namespace ConvertByteArrayHexLibrary; +namespace ConvertByteArrayToHexLibrary; public static class LookupTables { diff --git a/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayLookupTablesTests.cs b/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayLookupTablesTests.cs index d0dfba0d84..31272362e7 100644 --- a/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayLookupTablesTests.cs +++ b/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayLookupTablesTests.cs @@ -1,4 +1,4 @@ -using ConvertByteArrayHexLibrary; +using ConvertByteArrayToHexLibrary; namespace ConvertByteArrayToHexUnitTests; diff --git a/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayToHexUnitTests.csproj b/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayToHexUnitTests.csproj index e29b1f042d..b4866ca39d 100644 --- a/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayToHexUnitTests.csproj +++ b/collections-arrays/ConvertByteArrayToHex/test/ConvertByteArrayToHexUnitTests/ConvertByteArrayToHexUnitTests.csproj @@ -1,7 +1,7 @@  - net7.0 + net10.0 enable enable @@ -10,13 +10,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all