3253 {
3255 {
3256 bytesConsumed = 0;
3258 return false;
3259 }
3260 ReadOnlySpan<byte> charToHexLookup = HexConverter.CharToHexLookup;
3262 byte b = charToHexLookup[
index];
3263 if (b == byte.MaxValue)
3264 {
3265 bytesConsumed = 0;
3267 return false;
3268 }
3269 uint num = b;
3271 {
3272 for (
int i = 1;
i <
source.Length;
i++)
3273 {
3275 b = charToHexLookup[
index];
3276 if (b == byte.MaxValue)
3277 {
3280 return true;
3281 }
3282 num = (num << 4) + b;
3283 }
3284 }
3285 else
3286 {
3287 for (int j = 1; j < 8; j++)
3288 {
3290 b = charToHexLookup[
index];
3291 if (b == byte.MaxValue)
3292 {
3293 bytesConsumed = j;
3295 return true;
3296 }
3297 num = (num << 4) + b;
3298 }
3299 for (
int k = 8; k <
source.Length; k++)
3300 {
3302 b = charToHexLookup[
index];
3303 if (b == byte.MaxValue)
3304 {
3305 bytesConsumed = k;
3307 return true;
3308 }
3309 if (num > 268435455)
3310 {
3311 bytesConsumed = 0;
3313 return false;
3314 }
3315 num = (num << 4) + b;
3316 }
3317 }
3318 bytesConsumed =
source.Length;
3320 return true;
3321 }