parse static method
Parses the provided uuid
into a list of byte values as a List
Implementation
static List<int> parse(
String uuid, {
List<int>? buffer,
int offset = 0,
bool validate = true,
ValidationMode validationMode = ValidationMode.strictRFC4122,
}) {
if (validate) {
isValidOrThrow(fromString: uuid, validationMode: validationMode);
}
var i = offset, ii = 0;
// Create a 16 item buffer if one hasn't been provided.
buffer = (buffer != null) ? buffer : Uint8List(16);
// Convert to lowercase and replace all hex with bytes then
// string.replaceAll() does a lot of work that I don't need, and a manual
// regex gives me more control.
final regex = RegExp('[0-9a-f]{2}');
for (Match match in regex.allMatches(uuid.toLowerCase())) {
if (ii < 16) {
var hex = uuid.toLowerCase().substring(match.start, match.end);
buffer[i + ii++] = int.parse(hex, radix: 16);
}
}
// Zero out any left over bytes if the string was too short.
while (ii < 16) {
buffer[i + ii++] = 0;
}
return buffer;
}