MCPcopy Index your code
hub / github.com/RustPython/RustPython / hex_impl

Function hex_impl

crates/vm/src/bytes_inner.rs:1155–1199  ·  view source on GitHub ↗
(bytes: &[u8], sep: u8, bytes_per_sep: isize)

Source from the content-addressed store, hash-verified

1153}
1154
1155fn hex_impl(bytes: &[u8], sep: u8, bytes_per_sep: isize) -> String {
1156 let len = bytes.len();
1157
1158 let buf = if bytes_per_sep < 0 {
1159 let bytes_per_sep = core::cmp::min(len, (-bytes_per_sep) as usize);
1160 let chunks = (len - 1) / bytes_per_sep;
1161 let chunked = chunks * bytes_per_sep;
1162 let unchunked = len - chunked;
1163 let mut buf = vec![0; len * 2 + chunks];
1164 let mut j = 0;
1165 for i in (0..chunks).map(|i| i * bytes_per_sep) {
1166 hex::encode_to_slice(
1167 &bytes[i..i + bytes_per_sep],
1168 &mut buf[j..j + bytes_per_sep * 2],
1169 )
1170 .unwrap();
1171 j += bytes_per_sep * 2;
1172 buf[j] = sep;
1173 j += 1;
1174 }
1175 hex::encode_to_slice(&bytes[chunked..], &mut buf[j..j + unchunked * 2]).unwrap();
1176 buf
1177 } else {
1178 let bytes_per_sep = core::cmp::min(len, bytes_per_sep as usize);
1179 let chunks = (len - 1) / bytes_per_sep;
1180 let chunked = chunks * bytes_per_sep;
1181 let unchunked = len - chunked;
1182 let mut buf = vec![0; len * 2 + chunks];
1183 hex::encode_to_slice(&bytes[..unchunked], &mut buf[..unchunked * 2]).unwrap();
1184 let mut j = unchunked * 2;
1185 for i in (0..chunks).map(|i| i * bytes_per_sep + unchunked) {
1186 buf[j] = sep;
1187 j += 1;
1188 hex::encode_to_slice(
1189 &bytes[i..i + bytes_per_sep],
1190 &mut buf[j..j + bytes_per_sep * 2],
1191 )
1192 .unwrap();
1193 j += bytes_per_sep * 2;
1194 }
1195 buf
1196 };
1197
1198 unsafe { String::from_utf8_unchecked(buf) }
1199}
1200
1201pub fn bytes_to_hex(
1202 bytes: &[u8],

Callers 1

bytes_to_hexFunction · 0.85

Calls 4

minFunction · 0.85
lenMethod · 0.45
mapMethod · 0.45
unwrapMethod · 0.45

Tested by

no test coverage detected