В Dart существует несколько способов преобразования строки в ее шестнадцатеричное представление. Работаете ли вы над криптографическим приложением, кодируете данные или просто манипулируете строками, понимание этих методов может оказаться полезным. В этой статье блога мы рассмотрим различные методы, предоставим простые для понимания примеры кода и поможем вам овладеть искусством преобразования строк в шестнадцатеричный формат в Dart.
Метод 1: ручное преобразование с использованием строковых рун
Один простой подход — вручную преобразовать каждый символ строки в соответствующее ему шестнадцатеричное представление с помощью свойства runes
. Вот пример:
String stringToHex(String input) {
return input.runes
.map((rune) => rune.toRadixString(16))
.join('');
}
void main() {
String input = 'Hello, World!';
String hex = stringToHex(input);
print(hex); // Output: 48656c6c6f2c20576f726c6421
}
Метод 2: использование библиотеки hex
.
Dart предоставляет удобную библиотеку hex
, которая предлагает функции для кодирования и декодирования шестнадцатеричных строк. Чтобы преобразовать строку в шестнадцатеричную, вы можете использовать функцию hex.encode()
. Вот пример:
import 'package:convert/convert.dart';
void main() {
String input = 'Hello, World!';
List<int> bytes = input.codeUnits;
String hex = hex.encode(bytes);
print(hex); // Output: 48656c6c6f2c20576f726c6421
}
Метод 3: использование кодировки ASCII
Другой подход предполагает использование кодировки ASCII. Преобразовав каждый символ в его код ASCII, а затем преобразовав код в шестнадцатеричный, мы можем добиться желаемого результата. Вот пример:
String stringToHex(String input) {
return input.codeUnits
.map((unit) => unit.toRadixString(16))
.join('');
}
void main() {
String input = 'Hello, World!';
String hex = stringToHex(input);
print(hex); // Output: 48656c6c6f2c20576f726c6421
}
Метод 4. Использование библиотеки dart:ffi
.
Для более сложных сценариев, таких как взаимодействие с собственными библиотеками, можно использовать библиотеку dart:ffi
для преобразования строк в шестнадцатеричный формат.. Этот метод предполагает работу с указателями и строками в стиле C. Вот упрощенный пример:
import 'dart:ffi';
import 'package:ffi/ffi.dart';
void main() {
String input = 'Hello, World!';
Pointer<Utf8> str = Utf8.toUtf8(input);
String hex = str.toDartString().codeUnits
.map((unit) => unit.toRadixString(16))
.join('');
print(hex); // Output: 48656c6c6f2c20576f726c6421
calloc.free(str);
}
В этой статье мы рассмотрели различные методы преобразования строк в шестнадцатеричный формат в Dart. Мы рассмотрели ручное преобразование с использованием строковых рун, использование библиотеки hex
, кодировки ASCII и даже использование библиотеки dart:ffi
для сложных сценариев. Поняв эти методы, вы будете хорошо подготовлены к преобразованию строк в шестнадцатеричные числа в своих проектах Dart.
библиотека, dart:ffi
библиотека