将字符串位转换为字符串char,反之亦然,可以转换为ASCII C# [英] Convert string bit to string char or vice versa, can out to ASCII C#

查看:102
本文介绍了将字符串位转换为字符串char,反之亦然,可以转换为ASCII C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,

请你能帮我解决一下C#中的代码将字符串转换为字符串字符串,反之亦然,可以用ASCII格式来表示

例如:

bitstring =00111111101101010011111101101111001111111110110110011111101101111

resultstring =?μ?o?Û?o

并将其反转......



如果最好的话,你可以更正我的代码吗?



我尝试了什么:



拳头:

hello,
Please can you help me about code in C# to converting string bit to string char or vice versa,can out to ASCII
for example:
bitstring ="0011111110110101001111110110111100111111110110110011111101101111"
resultstring ="?µ?o?Û?o"
and reversing its...

Can you correct my code if it is the best?

What I have tried:

fist:

string result = "";
            while (value.Length > 0)
            {   var first8 = value.Substring(0, 8);
                value = value.Substring(8);
                var number = Convert.ToInt64(first8, 2);
                result += (char)number;







second






second

string S = "";
            byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
            for (int i = 0; i < asciiBytes.Length; i++)
                for (int j = 0; j < 8; j++)
                {
                    S += (asciiBytes[i] & 0x80) > 0 ? "1" : "0";
                    asciiBytes[i] <<= 1;
                }
            return S;

推荐答案

这将取决于您的数据所处的endian格式:大或小

但这里有两个从位转换为字符:

It's going to depend on what "endian" format your data is in: Big or Little
But here are two to convert from bits to chars:
private string CharStringFromBitStringLittleEndian(string s)
    {
    StringBuilder sb = new StringBuilder(s.Length / 8 + 1);
    byte temp = 0;
    byte bit = 1;
    foreach (char c in s)
        {
        if (c == '1') temp |= bit;
        bit <<= 1;
        if (bit == 0)
            {
            sb.Append((char)temp);
            bit = 1;
            temp = 0;
            }
        }
    if (bit != 1) sb.Append((char)temp);
    return sb.ToString();
    }
private string CharStringFromBitStringBigEndian(string s)
    {
    StringBuilder sb = new StringBuilder(s.Length / 8 + 1);
    byte temp = 0;
    byte bit = 128;
    foreach (char c in s)
        {
        if (c == '1') temp |= bit;
        bit >>= 1;
        if (bit == 0)
            {
            sb.Append((char)temp);
            bit = 128;
            temp = 0;
            }
        }
    if (bit != 1) sb.Append((char)temp);
    return sb.ToString();
    }


解决方案1展示了如何将二进制转换为字符。



现在将字符转换为二进制字符串表示形式,例如



1。)使用.net库

Solution 1 shows how to convert binary to character.

Now converting a character to binary string representation you can do e.g.

1.) Using .net library
int value = 219;
string binary = Convert.ToString(value, 2).PadLeft(8, '0');



2。)自制


2.) Self made

int value = 219;
StringBuilder sb = new StringBuilder(8);
while(value > 0)
{
	int mod= value % 2;
        if (mod == 0)
        {
        	sb.Insert(0, "0");
        }
	else
        {
        	sb.Insert(0, "1");
        }
        value /= 2;
}
string binary = sb.ToString().PadLeft(8, '0');





注意

注意,您正在使用Unicode,其中一个字符具有16位,而您的示例假设使用8位字符。



Note
Take care, you are working with Unicode for which a character has 16bit while your example assumes using 8 bit character.


这篇关于将字符串位转换为字符串char,反之亦然,可以转换为ASCII C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆