powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите считать 10 байт ...
25 сообщений из 39, страница 1 из 2
Помогите считать 10 байт ...
    #33918351
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi to all

есть гребанный файл, бинарный который
с него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число.

как их считать ??
в int и long не помещяется.
какие мысли на этот счет ?
Thanks.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33918473
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
массив, или short+long+long
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33918728
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zedaс него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число.в каком формате это число?
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33918935
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft Zedaс него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число.в каком формате это число?
Там десятичное число
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33918936
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что вы собираетесь с ним делать.

Наибольшее целое в С - long long - 8 байт.

Возможно, имеет смысл, считать его в массив и преобразовать к double?
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33918948
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaТам десятичное число

Двоично десятичное или все-таки десятичное?

Я так понимаю, у вас число в виде строки. Тогда считайте на массив символов и преобразуйте к long (atol).
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919112
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkhЧто вы собираетесь с ним делать.

Наибольшее целое в С - long long - 8 байт.

Возможно, имеет смысл, считать его в массив и преобразовать к double?
А как его в массив считать ?
Тут вот такое написано :

автор(Datatype: packed BCD, right-padded with "0xF")
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919196
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaТут вот такое написано :

автор(Datatype: packed BCD, right-padded with "0xF")

Значит у тебя, все-таки, двоично-десятичное.

1. счтываешь в массив, например функцией read.
2. потом берешь контейнер, типа long и обнуляешь его.
3. Если у тебя старший разряд первый, то берешь по байту с начала массива, умножешь на 10 и прибовляешь следующий.
4. Если у тебя старший разряд последний, что более вероятно, то делаешь то же самое но наоборот, т.е. кладешь в контейнер последний байт, умножаешь на 10, прибавляешь предпоследний, опять на десять, прибавляешь еще предыдущий и т.д.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919341
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще один вопрос:
а нафига вот это автор"0xF" нужно ?
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919360
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
packed BCD вроде бы подразумевает ДВЕ десятичные цифры в байте
ZedaИ еще один вопрос:
а нафига вот это автор"0xF" нужно ? А ты это у автор а, которого цитируешь, спроси :)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919467
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaИ еще один вопрос:
а нафига вот это автор"0xF" нужно ?

Я так понял, что имелось в виду в одном байте - одна цифра, что как правельно, заметил Barlone, запакованное двоично-десятичное число хранит в одном байте 2-е цифры.

Можит и хотели написать и другое, что надо, мол, этой маской выделять цифры и не забывать сдвигать.

Вообщем, гадание на кофейной гуще.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919556
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaИ еще один вопрос:
а нафига вот это автор"0xF" нужно ?



Вероятнее всего это говорит о том, что значащие разряды сдвинуты в лево.
А справа дополнены 0xF до необходимой длины.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919579
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так похоже, что число в BCD формате, то:
а) формат предполатгает что1 десятичное число занимает 4 бита, т.е. 123 будет выглядеть:
[0|0][0|0][0|0][0|0][0|0][0|0][0|0][0|0][0|1][2|3]
сконвертить самому
б) сконвертить через asm
читать asm, там должно быть конвертирование.
брать массив байт(char) идти в асм, пробовать конвертить.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919599
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может это дворик был? ;)

Если есть пример файла, то проще определить по нему.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919603
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin....asm, там должно быть конвертирование....

ассемблер - набор инструкций проца... просветите пожалуйста - какая команда проца(и тип пожалуйста) - занимается "конвертацией" ???


заранее сэнкс
(круглый)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919636
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 Aklin....asm, там должно быть конвертирование....

ассемблер - набор инструкций проца... просветите пожалуйста - какая команда проца(и тип пожалуйста) - занимается "конвертацией" ???


Помниться, что-то по работе с этими числами есть. Сейчас поищу.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919656
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919691
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhВоот-с. Коррекции.

Арифметические действия над неупакованными BCD-числами

дык конвертация(чего и куда тогда?) или коррекция ? :)

коррекция (asm)применяется после операций сложения над BCD числами..."упакованные-не упакованные" это от лукавого...процу похрену... другими словами Вы можете сложить 51h с 69h и вместо BAh получить 120h что при представлении в BCD и есть истина... сама команда должна следовать сразу после сложения (либо сложения с переносом)...
Пример...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
mov  a,#051h
mov  b,#069h
add  a,b
ad
mov  b,#00h
jnc   xru_001
mov  b,#01h
xru_001:
;-- сдесь имеем b:a = 120h


теперь возвращаемся к баранам...
ну и каким лешим Вы рекомендуете это ?

с уважением
(круглый)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919723
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
теперь возвращаемся к баранам...
ну и каким лешим Вы рекомендуете это ?


автор
* сложение неупакованных BCD-чисел;
* вычитание неупакованных BCD-чисел;
* умножение неупакованных BCD-чисел;
* деление неупакованных BCD-чисел;
* сложение упакованных BCD-чисел;
* вычитание упакованных BCD-чисел.


Да, вроде, преобразования нет. Сейчас уже не помню. Давно это было, если бы про BCD не напомнили, так и не вспомнил бы вообще.

ЗЫ: Если почитать топик, то моих рекомендаций по конвертированию в асме там нет. :)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919736
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh....ЗЫ: Если почитать топик, то моих рекомендаций по конвертированию в асме там нет. :)

я просто о том, что Вы дали наименее трудное правильное решение..в азм - то явно перебор...

с уважением
(круглый)
ЗЫ
Про фразу с эфами - действительно просче будет взглянуть на пример упаковки... Сдаёться мне, что в каждый байт запхнули по одной тэтраде, с прижимом в право...
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33919759
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0Про фразу с эфами - действительно просче будет взглянуть на пример упаковки... Сдаёться мне, что в каждый байт запхнули по одной тэтраде, с прижимом в право...

Имхо, автор топика уже ушел асм изучать.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33921039
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если считать что в c(10байт) число, то:

Код: 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.
#include <iostream.h>

int main(){
	long a;

	char c[ 10 ];
	double d;

	c[ 0 ] = 0x1;
	c[ 1 ] = 0x2;
	c[ 2 ] = 0x3;
	c[ 3 ] = 0x4;
	c[ 4 ] = 0x5;
	c[ 5 ] = 0x6;
	c[ 6 ] = 0x7;
	c[ 7 ] = 0x8;
	c[ 8 ] = 0x9;
	c[ 9 ] = 0x0;

	__asm{
		fbld c
		fst d
	};

	cout << d;
	
	cin>>a;
}
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33923087
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinесли считать что в c(10байт) число, то:

Код: 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.
#include <iostream.h>

int main(){
	long a;

	char c[ 10 ];
	double d;

	c[ 0 ] = 0x1;
	c[ 1 ] = 0x2;
	c[ 2 ] = 0x3;
	c[ 3 ] = 0x4;
	c[ 4 ] = 0x5;
	c[ 5 ] = 0x6;
	c[ 6 ] = 0x7;
	c[ 7 ] = 0x8;
	c[ 8 ] = 0x9;
	c[ 9 ] = 0x0;

	__asm{
		fbld c
		fst d
	};

	cout << d;
	
	cin>>a;
}


Код: plaintext
1.
2.
Build
  [C++ Error] Unit1.cpp( 29 ): E2329 Invalid combination of opcode and operands
Почему ?? что -то не так настроено ???


Я считываю эти десят байт в массив по байту, далее для разбиваю каждый элемент этого массива на две тетрады

Код: plaintext
1.
2.
int buf1 = mas[i] & 0xF0;
int buf1 = mas[i] & 0x0F;

вроде как должно получится нормальное число. Так ни фига не получается не сходится почему-то.
Вообще у кого небудь есть ссылка на доки по работе с BCD на С++ или С.

Thanks.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33923321
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zedaразбиваю каждый элемент этого массива на две тетрады
Код: plaintext
1.
2.
int buf1 = mas[i] & 0xF0;
int buf1 = mas[i] & 0x0F;

Код: plaintext
1.
2.
int buf1 = (mas[i] & 0xF0) >>  4 ;
int buf2 = mas[i] & 0x0F;
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33923830
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeda Aklinесли считать что в c(10байт) число, то:

Код: 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.
#include <iostream.h>

int main(){
	long a;

	char c[ 10 ];
	double d;

	c[ 0 ] = 0x1;
	c[ 1 ] = 0x2;
	c[ 2 ] = 0x3;
	c[ 3 ] = 0x4;
	c[ 4 ] = 0x5;
	c[ 5 ] = 0x6;
	c[ 6 ] = 0x7;
	c[ 7 ] = 0x8;
	c[ 8 ] = 0x9;
	c[ 9 ] = 0x0;

	__asm{
		fbld c
		fst d
	};

	cout << d;
	
	cin>>a;
}


Код: plaintext
1.
2.
Build
  [C++ Error] Unit1.cpp( 29 ): E2329 Invalid combination of opcode and operands
Почему ?? что -то не так настроено ???


Я считываю эти десят байт в массив по байту, далее для разбиваю каждый элемент этого массива на две тетрады

Код: plaintext
1.
2.
3.
VC  6 . 0  - работает 
int buf1 = mas[i] & 0xF0;
int buf1 = mas[i] & 0x0F;

вроде как должно получится нормальное число. Так ни фига не получается не сходится почему-то.
Вообще у кого небудь есть ссылка на доки по работе с BCD на С++ или С.

Thanks.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите считать 10 байт ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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