Dart 从 base64 转换为 HEX

Dart Convert from base64 to HEX

我不知道如何转换这个 base64 字符串:

'g7DmoaMppUjtbxe5Qm9NlMr5pRitu7TayInEUMeOW+FDxYW3GAh+G0YsfmoAyfqTw72fWphF9ncT
P7QnsXAM8Of6o92AuVzryBt5Usm4sJ32GLaH+9SNx3J5DK1NjKrWSbP0F/EyrGjoveBc2Ut7XntM
p8NcGn39eD+PHQKfWnc='

到这个十六进制:

'83b0e6a1a329a548ed6f17b9426f4d94caf9a518adbbb4dac889c450c78e5be143c585b718087e1b462c7e6a00c9fa93c3bd9f5a9845f677133fb427b1700cf0e7faa3dd80b95cebc81b7952c9b8b09df618b687fbd48dc772790cad4d8caad649b3f417f132ac68e8bde05cd94b7b5e7b4ca7c35c1a7dfd783f8f1d029f5a77'

我用这个link来转换它https://base64.guru/converter/decode/hex

像这样应该可以解决问题:

import 'dart:convert';

void main() {
  final hex = base64Decode(
          'g7DmoaMppUjtbxe5Qm9NlMr5pRitu7TayInEUMeOW+FDxYW3GAh+G0YsfmoAyfqTw72fWphF9ncT'
          'P7QnsXAM8Of6o92AuVzryBt5Usm4sJ32GLaH+9SNx3J5DK1NjKrWSbP0F/EyrGjoveBc2Ut7XntM'
          'p8NcGn39eD+PHQKfWnc=')
      .map((e) => e.toRadixString(16).padLeft(2, '0'))
      .join();

  print(hex);
  // 83b0e6a1a329a548ed6f17b9426f4d94caf9a518adbbb4dac889c450c78e5be143c585b718087e1b462c7e6a00c9fa93c3bd9f5a9845f677133fb427b1700cf0e7faa3dd80b95cebc81b7952c9b8b09df618b687fbd48dc772790cad4d8caad649b3f417f132ac68e8bde05cd94b7b5e7b4ca7c35c1a7dfd783f8f1d029f5a77
}

处理输入换行符的更新解决方案:

import 'dart:convert';

void main() {
  print(base64ToHex(
      'g7DmoaMppUjtbxe5Qm9NlMr5pRitu7TayInEUMeOW+FDxYW3GAh+G0YsfmoAyfqTw72fWphF9ncT\n'
      'P7QnsXAM8Of6o92AuVzryBt5Usm4sJ32GLaH+9SNx3J5DK1NjKrWSbP0F/EyrGjoveBc2Ut7XntM\n'
      'p8NcGn39eD+PHQKfWnc='));
  
  // 83b0e6a1a329a548ed6f17b9426f4d94caf9a518adbbb4dac889c450c78e5be143c585b718087e1b462c7e6a00c9fa93c3bd9f5a9845f677133fb427b1700cf0e7faa3dd80b95cebc81b7952c9b8b09df618b687fbd48dc772790cad4d8caad649b3f417f132ac68e8bde05cd94b7b5e7b4ca7c35c1a7dfd783f8f1d029f5a77
}

String base64ToHex(String source) =>
    base64Decode(LineSplitter.split(source).join())
        .map((e) => e.toRadixString(16).padLeft(2, '0'))
        .join();

我想我知道为什么了。我使用 simple_rsa Flutter 包在 base64 中转换我的字符串,但有 3 个“\n”。

@julemand101 你的代码是正确的。

我只是在你的代码前添加了一个 replaceAll "\n" -> ""。

String encryptedText='g7DmoaMppUjtbxe5Qm9NlMr5pRitu7TayInEUMeOW+FDxYW3GAh+G0YsfmoAyfqTw72fWphF9ncTP7QnsXAM8Of6o92AuVzryBt5Usm4sJ32GLaH+9SNx3J5DK1NjKrWSbP0F/yrGjoveBc2Ut7XntMp8NcGn39eD+PHQKfWnc='

 encryptedText=base64.normalize(encryptedText.replaceAll("\n", ""));//replace all
 final hex = base64Decode(encryptedText).map((e) => e.toRadixString(16).padLeft(2, '0')).join();