Hash.fromHex constructor

Hash.fromHex(
  1. String hexString
)

Create hash from hex string

Implementation

factory Hash.fromHex(String hexString) {
  // Remove 0x prefix if present
  if (hexString.startsWith('0x')) {
    hexString = hexString.substring(2);
  }

  if (hexString.length > maxHashStringSize) {
    throw HashStringSizeException();
  }

  // Pad with zeros if needed
  hexString = hexString.padLeft(maxHashStringSize, '0');

  try {
    // Decode hex string to bytes
    final parsedBytes = Uint8List.fromList(
      List.generate(hexString.length ~/ 2,
        (i) => int.parse(hexString.substring(i * 2, (i * 2) + 2), radix: 16))
    );

    // Reverse bytes since toString() produces reversed hex for display
    final bytes = Uint8List(hashSize);
    for (int i = 0; i < hashSize; i++) {
      bytes[i] = parsedBytes[hashSize - 1 - i];
    }

    return Hash.fromBytes(bytes);
  } catch (e) {
    throw FormatException('Invalid hex string: $hexString');
  }
}