Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как правильно преобразовать GUID в число? / 7 сообщений из 7, страница 1 из 1
16.12.2008, 08:11:09
    #35716043
Fixin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
Были мнения, Если записать гуид как: AB-CD-DE-FG-KLMNOP

Итак, в SQL:
declare @a uniqueidentifier
set @a = '40bf67bb-742c-4355-abb9-dff6a60bd701'
print cast(@a as varbinary)

'40bf67bb-742c-4355-abb9-dff6a60bd701' => 0xBB67 BF40 2C74 5543 ABB9 DFF6 A60B D701
DCBA-DC-ED-FG-KLMNOP

Если через ToByteArray(:
22345200-abe8-4f60-90c8-0d43 c5f6 c0f6 => 0xF6C0 F6C5 430D C890 4F60 ABE8 2234 5200
PO NM LK GF DE CD AB

А как правильно???
...
Рейтинг: 0 / 0
16.12.2008, 10:44:20
    #35716371
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
Fixin,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Функция GUIDВЧисло(GUID)
	
	Рез= 0 ;
	Стр = Строка(GUID);
	Индекс= 1 ;
	Пока Индекс<= 36  Цикл
		Симв = Сред(Стр,Индекс, 1 );
		Если Симв="-" Тогда
			Индекс=Индекс+ 1 ;
			Продолжить;
		КонецЕсли; 
		
		Если Симв>="0" и Симв<="9" Тогда
			Ч = Число(Симв);		
		ИначеЕсли Симв="a" Тогда
			Ч= 10 ;
		ИначеЕсли Симв="b" Тогда
			Ч= 11 ;
		ИначеЕсли Симв="c" Тогда
			Ч= 12 ;
		ИначеЕсли Симв="d" Тогда
			Ч= 13 ;	
		ИначеЕсли Симв="e" Тогда
			Ч= 14 ;		
		ИначеЕсли Симв="f" Тогда
			Ч= 15 ;		
		КонецЕсли; 
		
		Рез=Рез* 16 +Ч;
		
		Индекс=Индекс+ 1 ;
	КонецЦикла; 
	
	Возврат Рез;

КонецФункции
 

Процедура КнопкаВыполнитьНажатие(Кнопка)
	УИ = Новый УникальныйИдентификатор;
	Сообщить(Строка(УИ));
	Сообщить(GUIDВЧисло(УИ));
КонецПроцедуры
...
Рейтинг: 0 / 0
16.12.2008, 10:54:11
    #35716397
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
Fixin,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Функция ЧислоВGUID(Парам)
	
	СпецСтрока="0123456789abcdef";
	РезСтрока="";
	
	Парам1=Парам;
	Пока Парам1> 0  Цикл
	    Ост = Парам1% 16 ;
		Парам1=(Парам1-Ост)/ 16 ;
		Длина=СтрДлина(РезСтрока);
		Если (Длина= 12 ) или (Длина= 17 ) или (Длина= 22 ) или (Длина= 27 ) Тогда
			РезСтрока="-"+РезСтрока;			
		КонецЕсли; 
		РезСтрока=Сред(СпецСтрока,Ост+ 1 , 1 )+РезСтрока;
	КонецЦикла; 
	
	Возврат Новый УникальныйИдентификатор(РезСтрока);

КонецФункции
...
Рейтинг: 0 / 0
17.12.2008, 13:11:41
    #35719779
Fixin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
Меня больше интересует не функция, а принцип перевода.
То бишь правильно я перевожу гуид в числа или нет.
приведите примеры переводов
...
Рейтинг: 0 / 0
17.12.2008, 13:13:28
    #35719784
Fixin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
К тому же вы просто переводите все буквы и цифры ГУИДа последовательно, а это не есть правильно, важен порядок тетрад...
...
Рейтинг: 0 / 0
17.12.2008, 13:16:03
    #35719797
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
А что такое правильно?
у меня однозначное в обе стороны преобразование. Согласен может быть другое, но какое "правильное"?
С уважением, Naf
...
Рейтинг: 0 / 0
21.12.2008, 11:01:25
    #35726410
Fixin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно преобразовать GUID в число?
NafА что такое правильно?
у меня однозначное в обе стороны преобразование. Согласен может быть другое, но какое "правильное"?
С уважением, Naf

Правильное не то, что в обе стороны, а то, что совпадает с пониманием Микрософт:

'40bf67bb-742c-4355-abb9-dff6a60bd701'.ToByteArray()=
BB 67 BF 40 2C 74 55 43 AB B9 DF F6 A6 0B D7 01


'22345200-abe8-4f60-90c8-0d43c5f6c0f6'.ToByteArray()=
00 52 34 22 E8 AB 60 4F 90 C8 0D 43 C5 F6 C0 F6

В общем здесь http://partners.v8.1c.ru/forum/thread.jsp?id=640731#640731 мне уже ответили (правда, это закрытый форум).
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как правильно преобразовать GUID в число? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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