Имя: Пароль:
1C
1С v8
v8: Туплю с переводом из 16 -ой системы в десятичную.
0 Doomer
 
10.12.11
17:59
Функция возвращает мне 2 байта. Эти байты 1С воспринимает как строку. Туплю как перевести эту строку в 10-ную систему. Получается, я должен каждого число перевести в HEX, потом страший разряд умножить на 16 и прибавить к нему младший разряд. А потом полученне HEX число перевести в Dec. Все правильно? Или можно как-то проще?
1 Rie
 
10.12.11
18:01
(0) Что именно тебе возвращает функция? (пример)
Как это воспринимает 1С? (тот же пример)
А то сильно непонятно - какие HEX в какую десятичную систему переводить надо.
2 Doomer
 
10.12.11
18:05
(1) А что показывать? Работаю с сокетом. Подключаюсь к ресурсу, он мне присылает пакет с приглашением. Мне его нужно разобрать.
3 Rie
 
10.12.11
18:06
(2) Присылает строку из 2 байтов - то есть, 1 символ Unicode?
Строка(КодСимвола(Пакет))
4 petrowsky
 
10.12.11
18:21
(0)
>> Функция возвращает мне 2 байта. Эти байты 1С воспринимает как строку
1) напиши пример этой строки
2) напиши что хочешь получить из нее
а то, действительно, ничего не понятно
5 Александр_
Тверь
 
10.12.11
18:25
(4) он сорее всего получает строку вида "E5"  а хочет получить число "229"
6 Doomer
 
10.12.11
18:26
(3) Ну вообще мне функция возвращает 6 байт. Мне нужно разобрать эти байты.
1 байт - начало пакета
1 байт -номер канала
2 байта - порядковый номер пакета
2 байта длина пакета с данными
Дальше идут сами данные.
Получаю строку вот такого вида:
"*ё‰ "
7 echo77
 
10.12.11
18:26
Функции перевода из одной СС в другую для v8 есть. Поищите в интернетах и здесь.
8 echo77
 
10.12.11
18:27
(6) На хер в шестнадцатеричную? Для каждого символ получайте код символа - и будет вам счастье
9 Doomer
 
10.12.11
18:31
(8) Как мне получить порядковый номер и длину пакета?
Начало пакета я получаю:
КодСимвола(Ответ,1)
Номер канала:
КодСимвола(Ответ,2)
порядковый номер:
Я получаю два числа:
КодСимвола(Ответ,3)
КодСимвола(Ответ,4)
А дальше что с ними делать?
10 Rie
 
10.12.11
18:33
(9) Для начала - символы 1-байтовые или 2-байтовые?
Если однобайтовые - то

ЧтоДелать = КодСимвола(Ответ,3)*256+КодСимвола(Ответ,4);

(Опять же, смотря как выглядят числа на "той стороне" - BigEndian или LittleEndian)
11 Doomer
 
10.12.11
18:39
(10)А почему на 256? Это же 16 в квадрате. По моему на 16 нужно умножать.
12 PLUT
 
10.12.11
18:41
(0) Куркулятор виндовс вид Инженерный

там потренируйся с переводом из одной сись темы в другую
13 Doomer
 
10.12.11
18:41
+11 Вроде 64 в Dec это 6*10+4.
14 Rie
 
10.12.11
18:42
(11) В примере из (6) стоят 256-ричные цифры, а не 16-ричные.
15 Rie
 
10.12.11
18:43
(12) Ему не нужно переводить из одной системы в другую. Ему готовые байты идут, которые нужно просто скомпоновать.
16 PLUT
 
10.12.11
18:45
(15) неужели в самом деле?

в (0) напИсано что тупит с переводом
17 Rie
 
10.12.11
18:46
(16) См. (6). Там пример того, что приходит.
18 Rie
 
10.12.11
18:47
+(14) Впрочем, не совсем ясно - может быть, даже 65536-ричные (если строка приходит юникодная).
19 Doomer
 
10.12.11
18:51
(10) Я получаю Hex число. Мне его все равно нужно в Dec-перевести. Или я опять туплю?
20 Rie
 
10.12.11
18:56
(19) Забуть про Hex и Dec. Ты получаешь байты (судя по (6)); может быть даже 2-байтовые символы.
Предположим, что байты. Байт - это целое число от 0 до 255. В строке выглядит как символ - чтобы перейти от символа к коду, используй КодСимвола - получишь соответствующее число безо всяких преобразований.
Можешь рассматривать эти символы (байты) как цифры 256-ричной системе счисления, где каждый символ-"цифра" обозначает число КодСимвола(символ).

Остаются две неясности:
1) BigEndian или LittleEndian (если номер чего-то - 2-байтовый, то какой байт идёт первым: старший или младший);
2) строка у тебя состоит из ASCII-символов (1-байтовых) или Unicode (2-байтовых).
21 Doomer
 
10.12.11
20:31
(20) Я знаю что у меня всегда первый байт это 2A(h). Он отображается у меня как "*".
22 Rie
 
10.12.11
20:33
(21) А второй байт? В (6) - сколько байтов нарисовано?
Меня смущает символ "промилле" - в ASCII его нет.
23 Doomer
 
10.12.11
20:52
(22) А я сейчас снифером проверю. Посмотрим что приходит в HEX в снифере и во что преобразует это 1С.
24 Doomer
 
10.12.11
22:03
Все. Получилось. Спасибо всем.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.