About Strings..

Last post 07-23-2007 2:29 AM by SuperSpike. 4 replies.

Sort Posts:

  • About Strings..

    07-20-2007, 5:06 PM
    • Loading...
    • SuperSpike
    • Joined on 01-25-2007, 10:35 AM
    • Posts 37

    I friends!

    Now I have a Question abaut my week problem :)

    If I have a string in binary.....Can I search into this string a part of original string?

    for example:

    I have in a table (of a DataBase) a string in binary... (because the size is > 8000 characters)

    if I want know that the original string have this word "Home" how I can make it? How I can star a search into a binary string?

    Usually I work with C# (for web application) but I think that it's not a problem.

    thanks in advance!

     

    Filed under: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
  • Re: About Strings..

    07-21-2007, 8:05 AM
    Answer
    • Loading...
    • mbanavige
    • Joined on 11-06-2003, 1:29 PM
    • New England, USA
    • Posts 7,728
    • Moderator
      TrustedFriends-MVPs

    If you are converting your binary data back to a string after you retrieve it from your database then you can simply use your standard string functions such as String.Contains.

     

    Mike Banavige
    ~~~~~~~~~~~~
    Dont forget to click "Mark as Answer" on the post that helped you.
    This credits that member, earns you a point and marks your thread as Resolved so we will all know you have been helped.
  • Re: About Strings..

    07-21-2007, 7:37 PM
    • Loading...
    • SuperSpike
    • Joined on 01-25-2007, 10:35 AM
    • Posts 37

     Perfect but... If I retrive this binary string from DAtaBase, where I store this? in a string and after I use the Contains property?

    Can you give me simple example?

    very Thanks in advance 

  • Re: About Strings..

    07-23-2007, 1:35 AM
    Answer

    hi SuperSpike,

    Based on your description and my understanding, I created a helper class to help you to convert the binary to string, you can add it to the App_Code foler and use it directly

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Text;

    public sealed class strhelper
    {
                  public static void hexbin2hex(byte[] bhexbin, byte[] bhex, int nlen)
            {
                for (int i = 0; i < nlen / 2; i++)
                {
                    if (bhexbin[2 * i] < 0x41)
                    {
                       
                        bhex[i] = Convert.ToByte(((bhexbin[2 * i] - 0x30) << 4) & 0xf0);
                    }
                    else
                    {
                        bhex[i] = Convert.ToByte(((bhexbin[2 * i] - 0x37) << 4) & 0xf0);
                    }

                    if (bhexbin[2 * i + 1] < 0x41)
                    {
                        bhex[i] |= Convert.ToByte((bhexbin[2 * i + 1] - 0x30) & 0x0f);
                    }
                    else
                    {
                        bhex[i] |= Convert.ToByte((bhexbin[2 * i + 1] - 0x37) & 0x0f);
                    }
                }
            }
            public static byte[] hexbin2hex(byte[] bhexbin, int nlen)
            {
                if (nlen % 2 != 0)
                    return null;
                byte[] bhex = new byte[nlen / 2];
                hexbin2hex(bhexbin, bhex, nlen);
                return bhex;
            }
            public static void hex2hexbin(byte[] bhex, byte[] bhexbin, int nlen)
            {
                byte c;
                for (int i = 0; i < nlen; i++)
                {
                    c = Convert.ToByte((bhex[i] >> 4) & 0x0f);
                    if (c < 0x0a)
                    {
                        bhexbin[2 * i] = Convert.ToByte(c + 0x30);
                    }
                    else
                    {
                        bhexbin[2 * i] = Convert.ToByte(c + 0x37);
                    }
                    c = Convert.ToByte(bhex[i] & 0x0f);
                    if (c < 0x0a)
                    {
                        bhexbin[2 * i + 1] = Convert.ToByte(c + 0x30);
                    }
                    else
                    {
                        bhexbin[2 * i + 1] = Convert.ToByte(c + 0x37);
                    }
                }
            }
            public static byte[] hex2hexbin(byte[] bhex, int nlen)
            {
                byte[] bhexbin = new byte[nlen * 2];
                hex2hexbin(bhex, bhexbin, nlen);
                return bhexbin;
            }
            #endregion

               public static byte[] str2arr(string s)
            {
                return (new UnicodeEncoding()).GetBytes(s);
            }
            public static string arr2str(byte[] buffer)
            {
                return (new UnicodeEncoding()).GetString(buffer, 0,buffer .Length );
            }

            public static byte[] str2ascarr(string s)
            {
                return System.Text.UnicodeEncoding .Convert (System .Text .Encoding .Unicode ,System .Text .Encoding .ASCII ,str2arr(s));

               
            }

            public static byte[] str2hexascarr(string s)
            {
                byte[] hex = str2ascarr(s);
                byte[] hexbin = hex2hexbin(hex, hex.Length );
                return hexbin;
            }
            public static string ascarr2str(byte[] b)
            {
                return System.Text.UnicodeEncoding.Unicode.GetString(System.Text.ASCIIEncoding.Convert(System.Text.Encoding.ASCII, System.Text.Encoding.Unicode, b));
               
            }

            public static string hexascarr2str(byte[] buffer)
            {
                byte[] b = hex2hexbin(buffer, buffer .Length );
                return ascarr2str(b);
            }
            #endregion
        }

     Using it in .aspx page

        protected void Button2_Click(object sender, EventArgs e)
        {

            string connect = "Data Source=localhost\\sqlexpress;Integrated Security=True;Initial Catalog=pubs;";
            System.Data.SqlClient.SqlConnection sqlconnect = new System.Data.SqlClient.SqlConnection(connect);
            string command = "select myString from stringBinary";
            System.Data.SqlClient.SqlCommand sqlcommand = new System.Data.SqlClient.SqlCommand();
            sqlcommand.CommandText = command;
            sqlcommand.Connection = sqlconnect;

            System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter();
            da.SelectCommand = sqlcommand;
            DataSet ds = new DataSet();

            sqlconnect.Open();

            sqlcommand.ExecuteNonQuery();

            da.Fill(ds);

            TextBox1.Text = strhelper.ascarr2str((byte[])ds.Tables[0].Rows[0][0]);

              // then use TextBox.Text.Contains() to find whether the string contain a certain string

            sqlconnect.Close();


        }

    Hope it helps,

    Jessica

     

    Jessica Cao
    Sincerely,
    Microsoft Online Community Support


    “Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”
  • Re: About Strings..

    07-23-2007, 2:29 AM
    • Loading...
    • SuperSpike
    • Joined on 01-25-2007, 10:35 AM
    • Posts 37

    Very Thanks Jessica!

    Tomorrow I try to use your code and I Response in this forum my results! 

Page 1 of 1 (5 items)
Microsoft Communities
Page view counter