Функция для перебора шестнадцатеричных строк, разделенных запятыми, и их декодирования в dart/flutter

#flutter #dart #hex #decode

Вопрос:

Мне нужна небольшая помощь с функцией в dart/flutter, которую я пытаюсь написать.

Существует множество строк в шестнадцатеричном коде, разделенных запятой и соединенных вместе в одну String .

Например: String input = 'HexEncodedStr1,HexEncodedStr2,HexEncodedStr3'

Мне нужно расшифровать каждую из этих строк и вывести их в той же форме, разделенной запятыми:

String output = 'HexDecodedStr1,HexDecodedStr2,HexDecodedStr3'

В настоящее время я использую hex.dart пакет в качестве декодера строк, но я изо всех сил пытаюсь отделить каждую закодированную строку, прежде чем декодировать ее с помощью hex.dart :

 import 'package:hex/hex.dart';

//The decode function
String decode(hexString) {
  if (hexString != "") {
     hexString = HEX.decode(hexString);
     return hexString;
  } else {
     return "N/A";
  }
}

void main() {

  String test = decode('776f726c64,706c616e65740d0a');
  print(test); //world,planet

}
 

Ответ №1:

Как насчет разделения строки и последующего соединения декодированных частей?

 void main() {
  final decoded = '776f726c64,706c616e65740d0a'
      .split(',')
      .map(decode)
      .join(',');
  print(decoded); //world,planet
}
 

Ответ №2:

Вы можете использовать string.split(«,»);

https://api.flutter.dev/flutter/dart-core/String/split.html

 String input = 'HexEncodedStr1,HexEncodedStr2,HexEncodedStr3'
var inputSplit = input.split(",");
 

Теперь у вас есть список подстрок. Я думаю, что тогда вы можете использовать цикл for или foreach.

 inputSplit.forEach((element) => print(decode(element);));
 

или:

  for(var i = 0; i < inputSplit.length; i  )
 {
    var oneHex = decode(inputSplit[i]);
    print(oneHex);
 }