|
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
|
Все. Получилось. Спасибо всем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |