pub struct HexCodec { /* private fields */ }Expand description
Encodes and decodes hexadecimal byte strings.
HexCodec is an owned facade for whole byte slices. Whole-string prefix,
per-byte prefix, separator, and whitespace handling are part of
encode and decode. Use
crate::HexByteCodec when a low-level
qubit_codec::Codec<Value = u8, Unit = u8> is
required.
§Examples
use qubit_codec_misc::HexCodec;
let codec = HexCodec::new();
let encoded = codec.encode(&[0x1f, 0x8b]);
assert_eq!(encoded, "1f8b");
assert_eq!(codec.decode(&encoded).unwrap(), [0x1f, 0x8b]);Implementations§
Source§impl HexCodec
impl HexCodec
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a lowercase codec without prefix or separators.
§Returns
A hexadecimal codec using lowercase digits.
Sourcepub fn upper() -> Self
pub fn upper() -> Self
Creates an uppercase codec without prefix or separators.
§Returns
A hexadecimal codec using uppercase digits.
Sourcepub fn from_config(config: HexCodecConfig) -> Self
pub fn from_config(config: HexCodecConfig) -> Self
Creates a codec from an explicit configuration.
Sourcepub fn config(&self) -> &HexCodecConfig
pub fn config(&self) -> &HexCodecConfig
Returns the configuration used by this codec.
Sourcepub fn with_uppercase(self, uppercase: bool) -> Self
pub fn with_uppercase(self, uppercase: bool) -> Self
Sourcepub fn with_prefix(self, prefix: impl Into<String>) -> Self
pub fn with_prefix(self, prefix: impl Into<String>) -> Self
Sourcepub fn with_byte_prefix(self, prefix: impl Into<String>) -> Self
pub fn with_byte_prefix(self, prefix: impl Into<String>) -> Self
Sourcepub fn with_separator(self, separator: impl Into<String>) -> Self
pub fn with_separator(self, separator: impl Into<String>) -> Self
Sourcepub fn with_ignored_ascii_whitespace(self, ignore: bool) -> Self
pub fn with_ignored_ascii_whitespace(self, ignore: bool) -> Self
Sourcepub fn with_ignore_prefix_case(self, ignore: bool) -> Self
pub fn with_ignore_prefix_case(self, ignore: bool) -> Self
Sets whether ASCII case is ignored when decoding configured prefixes.
This option affects whole-output prefixes and per-byte prefixes during decoding only. Encoding writes prefixes exactly as configured.
§Parameters
ignore: Whether to ignore ASCII case while matching prefixes.
§Returns
The updated codec.
Sourcepub fn encode_into(&self, bytes: &[u8], output: &mut String)
pub fn encode_into(&self, bytes: &[u8], output: &mut String)
Encodes bytes into an existing string.
§Parameters
bytes: Bytes to encode.output: Destination string.
Sourcepub fn decode(&self, text: &str) -> MiscCodecResult<Vec<u8>>
pub fn decode(&self, text: &str) -> MiscCodecResult<Vec<u8>>
Decodes hexadecimal text into bytes.
§Parameters
text: Hexadecimal text.
§Returns
Decoded bytes.
§Errors
Returns MiscCodecError when a configured whole or per-byte prefix is
missing, when the normalized digit count is odd, or when a non-hex
digit is found.
Sourcepub fn decode_into(
&self,
text: &str,
output: &mut Vec<u8>,
) -> MiscCodecResult<()>
pub fn decode_into( &self, text: &str, output: &mut Vec<u8>, ) -> MiscCodecResult<()>
Decodes hexadecimal text into an existing byte vector.
§Parameters
text: Hexadecimal text.output: Destination byte vector.
§Errors
Returns MiscCodecError when the input is malformed.
§TODO
This method currently decodes into a temporary vector before appending
so that an error leaves output unchanged. A future optimization can
decode directly into output with a checkpoint-and-rollback strategy,
or validate and reserve in a first pass, to avoid the temporary vector
while preserving transactional behavior.