Convert string stored as binary back to string

1.4k Views Asked by At

I have stored string as binary data in db.
I am loading this data into c# as byte[]. How do I convert it to original string there?

declare @QRCodeLink nvarchar(max) = 'goo.gl/JCKW'
declare @QRCodeData varbinary(max) = CONVERT(varbinary(max), @QRCodeLink)
UPDATE dbo.QRCode
SET QRCodeData = @QRCodeData
WHERE ID = @ID

In C# code, Convert.ToString(qrCodeData) results in this "System.Byte[]"

3

There are 3 best solutions below

0
On BEST ANSWER

The nvarchar value is converted to a binary value where each character is two bytes.

You can convert it already when you read it from the database:

select convert(nvarchar(max), QRCodeData) from dbo.QRCode ...

Or you can use the UTF-16 encoding to convert the data in C#:

string qrCodeLink = Encoding.Unicode.GetString(qrCodeData);
1
On

Use Encoding.GetString()

byte[] byteArr = Encoding.UTF8.GetBytes("hello");
string s = Encoding.UTF8.GetString(byteArr);
Console.WriteLine(s);
0
On

It depends on the string encoding but assuming you are using ASCII

string decoded = ASCIIEncoding.ASCII.GetString(byteArray);

Where byteArray is your data from sqlserver

If it returns garbage try UTF8 or other encodings