protected static string EncodeSpaceSeparatedHexString(byte[] sArray) { Debug.Assert(sArray != null && sArray.Length != 0); int length = (sArray.Length * 3) - 1; // two chars per byte, plus 1 space between each return(string.Create(length, sArray, (hexOrder, sArray) => { int j = 0; for (int i = 0; i < sArray.Length; i++) { if (i != 0) { hexOrder[j++] = ' '; } int digit = sArray[i]; hexOrder[j++] = HexConverter.ToCharUpper(digit >> 4); hexOrder[j++] = HexConverter.ToCharUpper(digit); } Debug.Assert(j == hexOrder.Length); })); }
private static string?EncodeHexString(byte[]?sArray, uint start, uint end, bool spaceSeparated) { string?result = null; if (sArray != null) { uint len = (end - start) * 2; if (spaceSeparated) { // There will be n-1 spaces between n bytes. len += (end - start - 1); } char[] hexOrder = new char[len]; for (uint i = start, j = 0; i < end; i++) { if (spaceSeparated && i > start) { hexOrder[j++] = ' '; } int digit = sArray[i]; hexOrder[j++] = HexConverter.ToCharUpper(digit >> 4); hexOrder[j++] = HexConverter.ToCharUpper(digit); } result = new string(hexOrder); } return(result); }