v8: Туплю с переводом из 16 -ой системы в десятичную. #584671


#0 by Doomer
Функция возвращает мне 2 байта. Эти байты 1С воспринимает как строку. Туплю как перевести эту строку в 10-ную систему. Получается, я должен каждого число перевести в HEX, потом страший разряд умножить на 16 и прибавить к нему младший разряд. А потом полученне HEX число перевести в Dec. Все правильно? Или можно как-то проще?
#1 by Rie
Что именно тебе возвращает функция? (пример) Как это воспринимает 1С? (тот же пример) А то сильно непонятно - какие HEX в какую десятичную систему переводить надо.
#2 by Doomer
А что показывать? Работаю с сокетом. Подключаюсь к ресурсу, он мне присылает пакет с приглашением. Мне его нужно разобрать.
#3 by Rie
Присылает строку из 2 байтов - то есть, 1 символ Unicode? Строка(КодСимвола(Пакет))
#4 by petrowsky
>> Функция возвращает мне 2 байта. Эти байты 1С воспринимает как строку 1) напиши пример этой строки 2) напиши что хочешь получить из нее а то, действительно, ничего не понятно
#5 by Александр_Тверь
он сорее всего получает строку вида "E5"  а хочет получить число "229"
#6 by Doomer
Ну вообще мне функция возвращает 6 байт. Мне нужно разобрать эти байты. 1 байт - начало пакета 1 байт -номер канала 2 байта - порядковый номер пакета 2 байта длина пакета с данными Дальше идут сами данные. Получаю строку вот такого вида: "*ё‰ "
#7 by echo77
Функции перевода из одной СС в другую для v8 есть. Поищите в интернетах и здесь.
#8 by echo77
На хер в шестнадцатеричную? Для каждого символ получайте код символа - и будет вам счастье
#9 by Doomer
Как мне получить порядковый номер и длину пакета? Начало пакета я получаю: Номер канала: КодСимвола(Ответ,2) порядковый номер: Я получаю два числа: КодСимвола(Ответ,3) КодСимвола(Ответ,4) А дальше что с ними делать?
#10 by Rie
Для начала - символы 1-байтовые или 2-байтовые? (Опять же, смотря как выглядят числа на "той стороне" - BigEndian или LittleEndian)
#11 by Doomer
А почему на 256? Это же 16 в квадрате. По моему на 16 нужно умножать.
#12 by PLUT
Куркулятор виндовс вид Инженерный там потренируйся с переводом из одной сись темы в другую
#13 by Doomer
+11 Вроде 64 в Dec это 6*10+4.
#14 by Rie
В примере из стоят 256-ричные цифры, а не 16-ричные.
#15 by Rie
Ему не нужно переводить из одной системы в другую. Ему готовые байты идут, которые нужно просто скомпоновать.
#16 by PLUT
неужели в самом деле? в напИсано что тупит с переводом
#17 by Rie
См. . Там пример того, что приходит.
#18 by Rie
+ Впрочем, не совсем ясно - может быть, даже 65536-ричные (если строка приходит юникодная).
#19 by Doomer
Я получаю Hex число. Мне его все равно нужно в Dec-перевести. Или я опять туплю?
#20 by Rie
Забуть про Hex и Dec. Ты получаешь байты (судя по ); может быть даже 2-байтовые символы. Предположим, что байты. Байт - это целое число от 0 до 255. В строке выглядит как символ - чтобы перейти от символа к коду, используй КодСимвола - получишь соответствующее число безо всяких преобразований. Можешь рассматривать эти символы (байты) как цифры 256-ричной системе счисления, где каждый символ-"цифра" обозначает число КодСимвола(символ). Остаются две неясности: 1) BigEndian или LittleEndian (если номер чего-то - 2-байтовый, то какой байт идёт первым: старший или младший); 2) строка у тебя состоит из ASCII-символов (1-байтовых) или Unicode (2-байтовых).
#21 by Doomer
Я знаю что у меня всегда первый байт это 2A(h). Он отображается у меня как "*".
#22 by Rie
А второй байт? В - сколько байтов нарисовано? Меня смущает символ "промилле" - в ASCII его нет.
#23 by Doomer
А я сейчас снифером проверю. Посмотрим что приходит в HEX в снифере и во что преобразует это 1С.
#24 by Doomer
Все. Получилось. Спасибо всем.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С