14 if (ipSpan.Contains(
':'))
36 char* ptr = stackalloc
char[15];
43 char* ptr = stackalloc
char[15];
55 fixed (
char* addressString = &
MemoryMarshal.GetReference(formatted))
67 addressString[
offset++] =
'.';
69 addressString[
offset++] =
'.';
71 addressString[
offset++] =
'.';
92 charsWritten = stringBuilder.
Length;
103 if (stringBuilder[stringBuilder.
Length - 1] !=
':')
105 stringBuilder.
Append(
':');
117 return stringBuilder;
122 offset += ((number > 99) ? 3 : ((number <= 9) ? 1 : 2));
126 number =
Math.
DivRem(number, 10, out var result);
127 addressString[--num] = (char)(48 + result);
140 if (num != -1 && end == ipSpan.
Length)
157 if (flag || end != ipSpan.
Length)
159 string scopeId =
null;
161 if (scopeId !=
null && scopeId.Length > 1)
185 int item = tuple.longestSequenceStart;
186 int item2 = tuple.longestSequenceLength;
188 for (
int i = fromInclusive; i <
item; i++)
201 fromInclusive = item2;
203 for (
int j = fromInclusive; j < toExclusive; j++)
216 if ((
value & 0xF000u) != 0)
220 if ((
value & 0xFF00u) != 0)
224 if ((
value & 0xFFF0u) != 0)
233 uint host = (uint)((address[6] << 16) | address[7]);
static CultureInfo InvariantCulture
static char ToCharLower(int value)
static unsafe long ParseNonCanonical(char *name, int start, ref int end, bool notImplicitFile)
static unsafe bool IsValidStrict(char *name, int start, ref int end)
static void Parse(ReadOnlySpan< char > address, Span< ushort > numbers, int start, ref string scopeId)
static bool ShouldHaveIpv4Embedded(ReadOnlySpan< ushort > numbers)
static int int longestSequenceLength FindCompressionRange(ReadOnlySpan< ushort > numbers)
static int DivRem(int a, int b, out int result)
static void AppendSections(ushort[] address, int fromInclusive, int toExclusive, StringBuilder buffer)
static void AppendHex(ushort value, StringBuilder buffer)
static unsafe int IPv4AddressToStringHelper(uint address, char *addressString)
static unsafe bool Ipv4StringToAddress(ReadOnlySpan< char > ipSpan, out long address)
static IPAddress Parse(ReadOnlySpan< char > ipSpan, bool tryParse)
static unsafe bool IPv4AddressToString(uint address, Span< char > formatted, out int charsWritten)
static unsafe string IPv4AddressToString(uint address)
static StringBuilder IPv6AddressToStringHelper(ushort[] address, uint scopeId)
static uint ExtractIPv4Address(ushort[] address)
static unsafe bool Ipv6StringToAddress(ReadOnlySpan< char > ipSpan, Span< ushort > numbers, int numbersLength, out uint scope)
static unsafe void IPv4AddressToString(uint address, StringBuilder destination)
static bool IPv6AddressToString(ushort[] address, uint scopeId, Span< char > destination, out int charsWritten)
static string IPv6AddressToString(ushort[] address, uint scopeId)
static unsafe void FormatIPv4AddressNumber(int number, char *addressString, ref int offset)
static long HostToNetworkOrder(long host)
static long NetworkToHostOrder(long network)
static string dns_bad_ip_address
static string GetStringAndRelease(StringBuilder sb)
static void Release(StringBuilder sb)
static StringBuilder Acquire(int capacity=16)
void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)
StringBuilder Append(char value, int repeatCount)