简体   繁体   English

Dart 从 base64 转换为 HEX

[英]Dart Convert from base64 to HEX

I don't know how to convert this base64 String:我不知道如何转换这个 base64 字符串:

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

to this HEX:到这个十六进制:

'83b0e6a1a329a548ed6f17b9426f4d94caf9a518adbbb4dac889c450c78e5be143c585b718087e1b462c7e6a00c9fa93c3bd9f5a9845f677133fb427b1700cf0e7faa3dd80b95cebc81b7952c9b8b09df618b687fbd48dc772790cad4d8caad649b3f417f132ac68e8bde05cd94b7b5e7b4ca7c35c1a7dfd783f8f1d029f5a77'

I used this link to convert it https://base64.guru/converter/decode/hex我使用此链接将其转换为https://base64.guru/converter/decode/hex

Something like this should do the trick:这样的事情应该可以解决问题:

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
}

Updated solution which handles newlines in input:更新了处理输入换行符的解决方案:

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();

I think I know why.我想我知道为什么。 I use simple_rsa Flutter package that convert my string in base64 but with 3 "\n".我使用 simple_rsa Flutter package 将我的字符串转换为 base64 但使用 3“\n”。

@julemand101 Your code is correct. @julemand101 您的代码是正确的。

I simply added a replaceAll "\n" -> "" before your code.我只是在您的代码之前添加了一个 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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM