Convert string to hex-string in C#

后端 未结 5 782
说谎
说谎 2020-11-28 06:10

I have a string like \"sample\". I want to get a string of it in hex format; like this:

  \"796173767265\"

Please give the

相关标签:
5条回答
  • 2020-11-28 06:27
    var result = string.Join("", input.Select(c => ((int)c).ToString("X2")));
    

    OR

    var result  =string.Join("", 
                    input.Select(c=> String.Format("{0:X2}", Convert.ToInt32(c))));
    
    0 讨论(0)
  • 2020-11-28 06:33

    For Unicode support:

    public class HexadecimalEncoding
    {
        public static string ToHexString(string str)
        {
            var sb = new StringBuilder();
    
            var bytes = Encoding.Unicode.GetBytes(str);
            foreach (var t in bytes)
            {
                sb.Append(t.ToString("X2"));
            }
    
            return sb.ToString(); // returns: "48656C6C6F20776F726C64" for "Hello world"
        }
    
        public static string FromHexString(string hexString)
        {
            var bytes = new byte[hexString.Length / 2];
            for (var i = 0; i < bytes.Length; i++)
            {
                bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            }
    
            return Encoding.Unicode.GetString(bytes); // returns: "Hello world" for "48656C6C6F20776F726C64"
        }
    }
    
    0 讨论(0)
  • 2020-11-28 06:35

    First you'll need to get it into a byte[], so do this:

    byte[] ba = Encoding.Default.GetBytes("sample");
    

    and then you can get the string:

    var hexString = BitConverter.ToString(ba);
    

    now, that's going to return a string with dashes (-) in it so you can then simply use this:

    hexString = hexString.Replace("-", "");
    

    to get rid of those if you want.

    NOTE: you could use a different Encoding if you needed to.

    0 讨论(0)
  • 2020-11-28 06:41

    According to this snippet here, this approach should be good for long strings:

    private string StringToHex(string hexstring)
    {
        StringBuilder sb = new StringBuilder();
        foreach (char t in hexstring)
        { 
            //Note: X for upper, x for lower case letters
            sb.Append(Convert.ToInt32(t).ToString("x")); 
        }
        return sb.ToString();
    }
    

    usage:

    string result = StringToHex("Hello world"); //returns "48656c6c6f20776f726c64"
    

    Another approach in one line

    string input = "Hello world";
    string result = String.Concat(input.Select(x => ((int)x).ToString("x")));
    
    0 讨论(0)
  • 2020-11-28 06:41

    few Unicode alternatives

    var s = "0                                                                    
    0 讨论(0)
提交回复
热议问题