13

如何原生转换字符串-> base64base64 ->字符串

我只找到base64string的这个字节

想要这样:

String Base64String.encode();
String Base64String.decode();

还是从另一种语言移植更容易?

4

5 回答 5

8

从 0.9.2crypto开始

CryptoUtils已弃用。请改用包中的Base64APIdart:convert和十六进制 API convert

import 'dart:convert' show utf8, base64;

main() {
  final str = 'https://dartpad.dartlang.org/';

  final encoded = base64.encode(UTF8.encode(str));
  print('base64: $encoded');

  final str2 = utf8.decode(base64.decode(encoded));
  print(str2);
  print(str == str2);
}

DartPad中尝试

于 2016-04-10T12:35:07.207 回答
7

您可以使用转换库中的BASE64 编解码器base64在 Dart 2 中重命名)和LATIN1 编解码器(在 Dart 2 中重命名latin1)。

var stringToEncode = 'Dart is awesome';

// encoding

var bytesInLatin1 = LATIN1.encode(stringToEncode);
// [68, 97, 114, 116, 32, 105, 115, 32, 97, 119, 101, 115, 111, 109, 101]

var base64encoded = BASE64.encode(bytesInLatin1);
// RGFydCBpcyBhd2Vzb21l

// decoding

var bytesInLatin1_decoded = BASE64.decode(base64encoded);
// [68, 97, 114, 116, 32, 105, 115, 32, 97, 119, 101, 115, 111, 109, 101]

var initialValue = LATIN1.decode(bytesInLatin1_decoded);
// Dart is awesome

如果您总是使用LATIN1生成编码字符串,则可以通过创建编解码器直接将字符串转换为编码字符串/从编码字符串转换来避免 2 个转换调用。

var codec = LATIN1.fuse(BASE64);

print(codec.encode('Dart is awesome'));
// RGFydCBpcyBhd2Vzb21l

print(codec.decode('RGFydCBpcyBhd2Vzb21l'));
// Dart is awesome
于 2013-02-07T16:31:25.813 回答
7

我会评论 Günter 2016 年 4 月 10 日的帖子,但我没有名气。正如他所说,你现在应该使用dart:convert图书馆。您必须结合几个编解码器才能从 base64 字符串中获取 utf8 字符串,反之亦然。这篇文章融合你的编解码器更快。

import 'dart:convert';

void main() {
  var base64 = 'QXdlc29tZSE=';
  var utf8 = 'Awesome!';

  // Combining the codecs
  print(utf8 == UTF8.decode(BASE64.decode(base64)));
  print(base64 == BASE64.encode(UTF8.encode(utf8)));
  // Output:
  // true
  // true

  // Fusing is faster, and you don't have to worry about reversing your codecs
  print(utf8 == UTF8.fuse(BASE64).decode(base64));
  print(base64 == UTF8.fuse(BASE64).encode(utf8));
  // Output:
  // true
  // true
}

https://dartpad.dartlang.org/5c0e1cfb6d1d640cdc902fe57a2a687d

于 2017-01-12T21:27:49.633 回答
2

以下是 dart 中编码/解码的示例:

主要飞镖:

import 'dart:convert';

main() {
  // encode
  var str = "Hello world";
  var bytes = utf8.encode(str);
  var base64Str = base64.encode(bytes);
  print(base64Str);

  // decode
  var decoded_bytes = base64.decode(base64Str);
  var decoded_str = utf8.decode(decoded_bytes);
  print(decoded_str);
}
于 2021-01-01T19:49:37.793 回答
1

我拿了一个 dart.io -> base64.dart 类,稍微修改了一下,就可以了

如何使用:

var somestring = 'Hello dart!';

var base64string = Base64String.encode( somestring );
var mystring = Base64String.decode( base64string );

Pastbin.com 上的来源

来源 gist.github.com

于 2013-02-08T09:26:52.860 回答