Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
Что-то ничего в голову не идет как можно быстро организовать подобное преобразование. Получить из числа, например, 10 строковое '0A'.Есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 12:23 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
Я пользуюсь таким немного странным приемом: создаю фиктивный message exec sp_addmessage @msgnum = 50007, @severity = 16, @msgtext = '%X', @replace = 'replace' -- it's not the error; using for string representation of hex digits а потом пишу что-нибудь вроде select formatmessage(50007, @i), где @i - целое число. formatmessage возвращает строку. Остается только прилепить к ней префикс Ox, если это нужно. В MSSQL заявлена процедура xp_sprintf, аналог сишной процедуры, но: 1) это именно процедура, а не функция, что часто неудобно 2) она понимает пока только %s параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 12:48 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
используй User Define Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 13:56 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
Да понятно, что это элементарно оформляется в виде UDF. Мне хотелось показать сам прием. Кстати, будет интересно, если кто-нибудь приведет другое решение. Написать такое преобразование с использованием cast и convert мне так и не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 14:44 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
2GreenSunrise А мне лично понравилось ваше решение , тем более что функцию нужно "таскать" из базы в базу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 14:51 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
А есть еще в MSSQL2000 функция master.dbo.fn_varbintohexstr(<value> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 15:05 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
Угу. Есть. Сейчас точно не вспомню, но у меня были какие-то проблемы с binary при ее использовании. Поэтому ею и не пользуюсь. Не varbinary, а именно binary. Сегодня уже времени нет посмотреть, а завтра гляну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2002, 15:41 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
На до же сколько способов есть, а я сам писал функцию, да еще название похожее оказалось. Брал за основу процедуру которая создавалась в примере из BOL для 7.0 . Пример был по использованию процедур sp_OA..... А integer вместо varbinary преобразовываю уже другой функцией. CREATE FUNCTION dbo.fn_BinaryToHexStr(@BinValue varbinary(3998 )) Returns varchar(8000) AS begin DECLARE @CharValue varchar(8000), @i int, @Length int, @HexString char(16), @TempInt int, @FirstInt int, @SecondInt int set @CharValue = '0x' set @i = 1 set @Length = DATALENGTH(@BinValue) set @HexString = '0123456789ABCDEF' WHILE (@i <= @Length) BEGIN set @TempInt = CONVERT(int, SUBSTRING(@BinValue,@i,1)) set @FirstInt = FLOOR(@TempInt/16) set @SecondInt = @TempInt - (@FirstInt*16) set @CharValue = @CharValue + SUBSTRING(@HexString, @FirstInt+1, 1) + SUBSTRING(@HexString, @SecondInt+1, 1) set @i = @i + 1 END return @CharValue end GO create function fn_IntToHex(@iValue int) returns varchar(10) as begin Return dbo.fn_BinaryToHexStr(convert(varbinary(4),@iValue)) end go select dbo.fn_IntToHex(1882400001) /* Результат: ---------- 0x70332501 */ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2002, 06:42 |
|
||
|
перевод целого числа в строковое шестнадцатиричное
|
|||
|---|---|---|---|
|
#18+
2GreenSunrise А человеку не надо ни varbinary, ни binary. Ему надо int. А функция master.dbo.fn_varbintohexstr самым чудесным образом кушает целое значение. select master.dbo.fn_varbintohexstr(10) -------------------------------------------------- 0x0000000a (1 row(s) affected) declare @i bigint set @i=87723458722345 select master.dbo.fn_varbintohexstr(@i) -------------------------------------------------- 0x00004fc8b5987a29 (1 row(s) affected) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2002, 06:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32020517&tid=1824377]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 371ms |

| 0 / 0 |
