powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / конвертация int
9 сообщений из 9, страница 1 из 1
конвертация int
    #38872924
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читаю из поля image целое значение типа WORD: B6 00 00 00

если читать как
Код: sql
1.
select CAST(CAST(0XB6 AS binary(1)) AS tinyint) 

то все верно = 182 байта.

А как положить в int?

Код: sql
1.
select CAST(CAST(0XB6000000 AS binary(4)) AS int)

==> -1241513984 ????
...
Рейтинг: 0 / 0
конвертация int
    #38872930
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select CAST(0x000000b6 AS int), CAST(0x00b6 AS smallint)

Thanks
...
Рейтинг: 0 / 0
конвертация int
    #38872931
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikчитаю из поля image целое значение типа WORD: B6 00 00 00

если читать как
Код: sql
1.
select CAST(CAST(0XB6 AS binary(1)) AS tinyint) 


то все верно = 182 байта.

А как положить в int?

Код: sql
1.
select CAST(CAST(0XB6000000 AS binary(4)) AS int)


==> -1241513984 ????
B6 00 00 00 - это и есть отрицательное число. В первом бите 32 битного числа 1 - это по любому меньше нуля

А вот если у вас в вашем файле числа кодируются наоборот, то вам нужно перевернуть байтовую строку, поскольку у интеля старший байт всегда спереди, а форматы файлов писались давным давно под порядок байт мотороллы и DEC

Код: sql
1.
select CAST(CAST(REVERSE(0XB6000000) AS binary(4)) AS int)
...
Рейтинг: 0 / 0
конвертация int
    #38872935
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

--B6 00 00 00

это то что hex viewer показывает, понятно что в реальности там все что угодно
...
Рейтинг: 0 / 0
конвертация int
    #38873140
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikalexeyvg,

--B6 00 00 00

это то что hex viewer показывает, понятно что в реальности там все что угодноНу вряд ли hex viewer врёт? Или, если врёт, нужно использовать другую программу, например, FAR

Дело то понятное в данном случае - разный порядок байтов: Intel и Motorola. Во многих прогах даже настройка есть, как в файл писать, и в форматах файлов часто есть признак, в каком стиле записываются числа.
...
Рейтинг: 0 / 0
конвертация int
    #38873599
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в итоге подобрал.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE function dbo.fn_bin2int(@value binary(4))
returns int
as 
begin
  return cast( ( cast( (right( right(@value,2) ,1) + left(right(@value,2),1) ) as binary(2))
               + cast( (right( left( @value,2) ,1) + left(@value,1) ) as binary(2)) ) as int)
end
go



это из формата файла bmp.
...
Рейтинг: 0 / 0
конвертация int
    #38873617
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikв итоге подобрал.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE function dbo.fn_bin2int(@value binary(4))
returns int
as 
begin
  return cast( ( cast( (right( right(@value,2) ,1) + left(right(@value,2),1) ) as binary(2))
               + cast( (right( left( @value,2) ,1) + left(@value,1) ) as binary(2)) ) as int)
end
go



это из формата файла bmp.

можно же было просто

Код: sql
1.
return  cast(cast(reverse(@value) as binary(4)) as int)
...
Рейтинг: 0 / 0
конвертация int
    #38873730
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikв итоге подобрал.Прикольно, то же самое, но сложнее.
Вы отвечали, не читая? :-)
...
Рейтинг: 0 / 0
конвертация int
    #38873793
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, синдром рассеянного внимания :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / конвертация int
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]