13

文字列をネイティブに変換する方法-> base64およびbase64 ->文字列

私はbase64stringにこのバイトだけを見つけました

これが欲しい:

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

または別の言語から移植する方が簡単ですか?

4

5 に答える 5

8

cryptoパッケージの 0.9.2 以降

CryptoUtils廃止されました。代わりに、パッケージのBase64APIdart:convertおよび hex 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

ギュンターの 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 に答える
7

convert ライブラリからBASE64 コーデック(Dart 2 で名前が変更さbase64れた) と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 に答える
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 に答える