Я пытаюсь преобразовать число String Hex обратно в Byte() в CSharp, и я просто не могу этого сделать!
Эти двоичные числа хранятся в столбце varBinary(8) внутри Sql Server 2012. Пример формата: 0x000000003B654362.
У меня нет проблем с получением их из базы данных и превращением в строку. Но когда я хочу запросить базу данных, используя этот шестнадцатеричный номер в качестве ключа, я хочу вернуть строку обратно в тип cSharp Byte. Я получаю сообщение об ошибке «Входная строка имеет неверный формат» каждый раз, когда пытаюсь использовать Convert.ToByte.
Сами шестнадцатеричные числа были созданы внутри запроса tsql внутри Sql Server следующим образом.
Какую разновидность Convert.ToByte мне нужно использовать, чтобы превратить шестнадцатеричную строку обратно в байт, чтобы я мог использовать ее в качестве параметра запроса типа varBinary(8), чтобы использовать ее в качестве ключа при извлечении из базы данных. ? Я не уверен, какой тип кодировки SQL Server 2012 использует для создания этих шестнадцатеричных чисел, поскольку они создаются в sql, а не в cSharp. Спасибо, что посмотрели.
@Марк Г
Я попытался запросить базу данных, используя байт []. requestNbr - это мой шестнадцатеричный номер в виде строки, которую я пробовал System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding(); Byte[] bytes = кодировка.GetBytes(requestNbr); Затем я также попробовал UTF8, UTF32 и ASCIIEncoding.
Все с cmd.Parameters.Add("@requestNbr", SqlDbType.VarBinary).Value = bytes;
Ни один из них не дает мне никаких результатов из базы данных. Тем не менее, когда я перехожу к хранимой процедуре и просто устанавливаю для параметра @requestNbr varBinary(8) значение HexNumber, он возвращает результаты.
Параметр varBinary sql
Фильтр «Где»
Результаты, которые я должен получить, когда я передаю свой байт [], но всегда не возвращает никаких результатов.