首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中将字符串转换为二进制

在C#中将字符串转换为二进制
EN

Stack Overflow用户
提问于 2011-04-14 21:57:14
回答 4查看 117.4K关注 0票数 28

我有一个函数将字符串转换为十六进制,如下所示,

代码语言:javascript
复制
public static string ConvertToHex(string asciiString)
{
    string hex = "";
    foreach (char c in asciiString)
    {
         int tmp = c;
         hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
    }
    return hex;
}

你能帮我写另一个字符串到基于我的示例函数的二进制函数吗?

代码语言:javascript
复制
public static string ConvertToBin(string asciiString)
{
    string bin = "";
    foreach (char c in asciiString)
    {
        int tmp = c;
        bin += String.Format("{0:x2}", (uint)System.Convert.????(tmp.ToString()));
    }
    return bin;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-14 22:00:37

这就是了:

代码语言:javascript
复制
public static byte[] ConvertToByteArray(string str, Encoding encoding)
{
    return encoding.GetBytes(str);
}

public static String ToBinary(Byte[] data)
{
    return string.Join(" ", data.Select(byt => Convert.ToString(byt, 2).PadLeft(8, '0')));
}

// Use any sort of encoding you like. 
var binaryString = ToBinary(ConvertToByteArray("Welcome, World!", Encoding.ASCII));
票数 47
EN

Stack Overflow用户

发布于 2012-05-25 17:49:56

听起来您基本上想要将一个ASCII字符串,或者更好地说,将一个字节的as you can encode your string to a byte[] using your preferred encoding mode转换成一个由1和0组成的字符串?即101010010010100100100101001010010100101001010010101000010111101101010

这个可以帮你做到这一点。

代码语言:javascript
复制
//Formats a byte[] into a binary string (010010010010100101010)
public string Format(byte[] data)
{
    //storage for the resulting string
    string result = string.Empty;
    //iterate through the byte[]
    foreach(byte value in data)
    {
        //storage for the individual byte
        string binarybyte = Convert.ToString(value, 2);
        //if the binarybyte is not 8 characters long, its not a proper result
        while(binarybyte.Length < 8)
        {
            //prepend the value with a 0
            binarybyte = "0" + binarybyte;
        }
        //append the binarybyte to the result
        result += binarybyte;
    }
    //return the result
    return result;
}
票数 11
EN

Stack Overflow用户

发布于 2011-04-14 22:47:25

下面将为您提供每个字符低位字节的十六进制编码,这看起来就像您所要求的:

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
foreach (char c in asciiString)
{
    uint i = (uint)c;
    sb.AppendFormat("{0:X2}", (i & 0xff));
}
return sb.ToString();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5664345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档