zoukankan      html  css  js  c++  java
  • 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());
      }
    }
  • 相关阅读:
    19. Remove Nth Node From End of List
    18. 4Sum
    16. 3Sum Closest
    15. 3Sum
    17. Letter Combinations of a Phone Number
    A Network-based End-to-End Trainable Task-oriented Dialogue System
    14. Longest Common Prefix
    36. Valid Sudoku
    29. Divide Two Integers
    32. Longest Valid Parentheses
  • 原文地址:https://www.cnblogs.com/chucklu/p/4625214.html
Copyright © 2011-2022 走看看