powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как правильно преобразовать GUID в число?
7 сообщений из 7, страница 1 из 1
Как правильно преобразовать GUID в число?
    #35716043
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Были мнения, Если записать гуид как: 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
Как правильно преобразовать GUID в число?
    #35716371
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как правильно преобразовать GUID в число?
    #35716397
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как правильно преобразовать GUID в число?
    #35719779
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня больше интересует не функция, а принцип перевода.
То бишь правильно я перевожу гуид в числа или нет.
приведите примеры переводов
...
Рейтинг: 0 / 0
Как правильно преобразовать GUID в число?
    #35719784
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же вы просто переводите все буквы и цифры ГУИДа последовательно, а это не есть правильно, важен порядок тетрад...
...
Рейтинг: 0 / 0
Как правильно преобразовать GUID в число?
    #35719797
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое правильно?
у меня однозначное в обе стороны преобразование. Согласен может быть другое, но какое "правильное"?
С уважением, Naf
...
Рейтинг: 0 / 0
Как правильно преобразовать GUID в число?
    #35726410
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как правильно преобразовать GUID в число?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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