1747 {
1749 if (num < 0)
1750 {
1751 return -1;
1752 }
1754 return part switch
1755 {
1756 IcuLocaleDataParts.Lcid => readOnlySpan[2] | (readOnlySpan[1] << 8) | (readOnlySpan[0] << 16),
1757 IcuLocaleDataParts.AnsiCodePage => ((readOnlySpan[4] & 0xF0) >> 4) | ((readOnlySpan[3] & 0xFF) << 4),
1758 IcuLocaleDataParts.OemCodePage => readOnlySpan[5] | ((readOnlySpan[4] & 0xF) << 8),
1759 IcuLocaleDataParts.MacCodePage => readOnlySpan[7] | (readOnlySpan[6] << 8),
1761 IcuLocaleDataParts.GeoId => readOnlySpan[13] | (readOnlySpan[12] << 8) | (readOnlySpan[11] << 16) | (readOnlySpan[10] << 24),
1762 IcuLocaleDataParts.DigitSubstitutionOrListSeparator => ResolveDigitListSeparator(readOnlySpan[14]),
1763 IcuLocaleDataParts.SpecificLocaleIndex => ResolveIndex(((readOnlySpan[16] & 0xF0) >> 4) | ((readOnlySpan[15] & 0xFF) << 4)),
1764 IcuLocaleDataParts.ConsoleLocaleIndex => ResolveIndex(readOnlySpan[17] | ((readOnlySpan[16] & 0xF) << 8)),
1765 _ => -1,
1766 };
1767 static int ResolveDigitListSeparator(
int value)
1768 {
1769 return ((
value & 0xF0) << 12) | (
value & 0xF);
1770 }
1771 static int ResolveIndex(
int value)
1772 {
1774 {
1776 }
1777 return -1;
1778 }
1779 }
static int SearchCultureName(string name)
static ReadOnlySpan< byte > NameIndexToNumericData