ramadevi82 Ответов: 1

Десятичное преобразование в 2-значный шестнадцатеричный код


В моем коде label26-это "CHOL", и я преобразую его в hex как "43484f4c", используя приведенный ниже код, и храню его в своей базе данных MS ACCESS с помощью VB6, но теперь я хочу сохранить его как 2-значный шестнадцатеричный код, я хочу выделить ему только 2 байта, как это возможно

Спасибо

Что я уже пробовал:

стр = Label26.Заголовок
байты = StrConv(str, vbFromUnicode)
ул = ""
Для i = LBound(байт) To UBound(байты)
= стр &амп стр; формат$(в шестнадцатеричном$(в байтах(я)), "00") затем я
Label26.Ул. титр =
str = StrConv(байты, vbUnicode)
rs.Fields("NameofTest").Значение = Label26.Заголовок

1 Ответов

Рейтинг:
0

OriginalGriff

Но это не так. Проблема в том, что - по крайней мере - это четыре буквенных символа: от "А" до "Я" в каждом месте. Это означает, что существует 26 возможных значений для каждого из четырех символов, составляющих ваш код (или 36, Если вы также разрешаете цифры).
Два байта могут содержать только четыре значения * 16 - от 0 до 65535 - и четыре * 26 требуют от 0 до 456875, которые физически не поместятся в два байта.


ramadevi82

или я могу хранить в пакетном формате?
если да,то можете ли вы помочь мне в кодировании

OriginalGriff

Откуда мне знать? У меня нет никакой информации о том, что вы делаете, кроме того, что вы набрали, и до сих пор это просто просьба о чем-то, что физически невозможно!
Я понятия не имею, почему вы пытаетесь это сделать, для чего используется ваш код, вообще ничего.

ramadevi82

мой код используется для биомедицинской машины.мы проводим в нем некоторые тесты.для запуска теста нам нужны некоторые значения параметров.раньше мы хранили значения вручную с помощью клавиатуры, но теперь я пытаюсь сохранить их в ПК и отправить через rs232 на машину.
например,у нас температуры 37 град С,название испытания, "Чол"(холестерина),объем аспирации и т. д....те поля, которые у меня есть, чтобы сохранить значения

OriginalGriff

Итак, первое, что вам нужно сделать, это посмотреть на связь с машиной, и что она принимает, и как она принимает их - потому что пока вы точно не знаете, что вы можете отправить (и как вы можете это отправить), нет никакого смысла начинать кодировать или даже начинать проектировать код - вы не можете изменить то, что делает машина, поэтому вам нужно обойти это. А это означает полное понимание связи с ним и тестирование того, что вы хотите сделать, используя что-то вроде Hyperterminal, чтобы доказать концепцию, прежде чем вы начнете кодировать.

ramadevi82

я должен отправить код в шестнадцатеричном формате и уже код был разработан ранее в коде C теперь в соответствии с этим я должен установить параметры

ramadevi82

с помощью программирования в VB6 у меня есть, чтобы отправить значения параметров

ramadevi82

а связь осуществляется через rs232

OriginalGriff

О, боже мой...
RS232-это спецификация связи физического уровня: она определяет электрические характеристики линии связи в терминах напряжений и означает ли они "1" или "0" в битовых терминах. Он не указывает, что эти "1"и "0"означают для любого конца ссылки, как быстро они должны быть отправлены или какая интерпретация должна быть поставлена на них. Черт возьми, он даже не определяет, является ли ссылка синхронной, асинхронной или насколько велик символ (или даже используются ли символы вообще).
Если у вас есть код на языке Си, которому вы должны следовать - потому что он работает - тогда прочтите его и посмотрите, что он делает. Потому что "отправка параметров" - это не функция RS232: речь идет о слое 2 7-слойной модели, в которой RS232-это седьмой слой, прямо внизу!

ramadevi82

Хорошо, спасибо, я проверю и еще одно сомнение..я уже говорил ранее, что преобразую параметры в шестнадцатеричный код, поэтому "CHOL" преобразуется в "43484f4c" и сохраняется в базе данных, но могу ли я сформировать его как структуру пакета с кадром RS-232 as (1 стартовый бит, 7 битов данных, 1 бит четности и 2 стоп-бита).