如何将字符串转换为二进制

时间:2014-09-18 06:34:21

标签: dart

嘿,有一个dart构建方式将字符串转换为例如二进制字符串 print(" a" .toBinary())=> 0110 0001

或者你认为最好的方法是什么?

3 个答案:

答案 0 :(得分:10)

您需要说出您需要的格式。字符串是16位整数的序列。在某些设置中,它们被解释为UTF-16,其中一些整数(代码单元)代表单个代码点,其他代码点需要两个代码单元。在其他设置中,一个"字符"不止一个代码点。因此,要将字符串转换为位,您需要准确了解如何解释字符串。

这里你只为#34; a"而不是,例如" 000000000110001"只写8位,所以我假设你只考虑ASCII字符串。

让我们假设它是所有ASCII,你想要八位结果:

var binstring = string.codeUnits.map((x) => x.toRadixString(2).padLeft(8, '0'))
                                .join();

答案 1 :(得分:3)

听起来你正在寻找与javascript' String.charCodeAt方法相当的Dart。在Dart中,有两个选项,具体取决于您是想要整个字符串的字符代码还是字符串中的单个字符。

String.codeUnitAt是一个方法,它返回字符串中给定索引处的字符的int。您可以按如下方式使用它:

String str = 'hello';
print(str.codeUnitAt(3)); //108

您可以使用String.codeUnits将整个字符串转换为整数值:

String str = 'hello';
print(str.codeUnits); //[104, 101, 108, 108, 111]

如果您需要将这些整数转换为相应的二进制字符串,那么您希望我们int.toRadixString的参数为2

String str = 'hello';
List<String> binarys = str.codeUnits.map((int strInt) => strInt.toRadixString(2));
print(binarys); //(1101000, 1100101, 1101100, 1101100, 1101111)

答案 2 :(得分:0)

尝试以下操作:

import 'dart:core';

void main() {
    String name = "hello";
    for(int binary in name.codeUnits)print(binary.toRadixString(2));
}