Binary to Text (ASCII) Conversion

Binary to Text (ASCII) Conversion

Description:

Write a function that takes in a binary string and returns the equivalent decoded text (the text is ASCII encoded).

Each 8 bits on the binary string represent 1 character on the ASCII table.

Note: In the case of an empty binary string your function should return an empty string.

using System;
using System.Collections.Generic;
using System.Linq;

public static class Kata
{
  public static string BinaryToString(string binary)
  {
      int count = binary.Length / 8;
            string tmp = string.Empty;
            List<char> list = new List<char>();
            for (int i = 0; i < count; i++)
            {
                tmp = binary.Substring(i * 8, 8);
                list.Add((char)(Convert.ToInt32(tmp,2)));
            }
            return string.Join(string.Empty,list);
  }
}

 

其他人的解法:

binary.Split(8)的用法,通过this关键字对string类进行了扩展,增加了扩展方法Split(int n)
IEnumerable<string>和yield的用法

Convert.ToChar的用法

using System;
using System.Linq;
using System.Collections.Generic;

public static class Kata
{
  public static string BinaryToString(string binary)
  {
      return string.Join("", binary.Split(8).Select(s => Convert.ToChar(Convert.ToInt32(s, 2))));
  }
  
  static IEnumerable<string> Split(this string s, int size)
  {
    for (int i = 0; i < s.Length; i += size) {
      yield return s.Substring(i, Math.Min(size, s.Length - i));
    }
  }
}

 

Encoding.GetString 方法 (Byte[])

ASCIIEncoding 

using System;
using System.Text;
using System.Collections.Generic;

public static class Kata
{
  public static string BinaryToString(string binary)
  {
      List<Byte> byteList = new List<Byte>();
      for (int i = 0; i < binary.Length; i += 8)
        byteList.Add(Convert.ToByte(binary.Substring(i, 8), 2));
      return Encoding.ASCII.GetString(byteList.ToArray());
  }
}

 

上面版本的装逼写法

using System;
using System.Text;
using System.Linq;

public static class Kata
{
  public static string BinaryToString(string binary)
  {
      return Encoding.ASCII.GetString(Enumerable.Range(0, binary.Length / 8)
             .Select(i => binary.Substring(i * 8, 8))
             .Select(s => Convert.ToByte(s, 2)).ToArray());
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值