|
|
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Hi to all есть гребанный файл, бинарный который с него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число. как их считать ?? в int и long не помещяется. какие мысли на этот счет ? Thanks. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 11:17 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
массив, или short+long+long ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 11:49 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Zedaс него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число.в каком формате это число? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 12:59 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
miksoft Zedaс него нужно считать 10 байт, причем в этих 10-ти байтах нахотидся целое число.в каком формате это число? Там десятичное число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 13:58 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Что вы собираетесь с ним делать. Наибольшее целое в С - long long - 8 байт. Возможно, имеет смысл, считать его в массив и преобразовать к double? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 13:58 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaТам десятичное число Двоично десятичное или все-таки десятичное? Я так понимаю, у вас число в виде строки. Тогда считайте на массив символов и преобразуйте к long (atol). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 14:01 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
AkhЧто вы собираетесь с ним делать. Наибольшее целое в С - long long - 8 байт. Возможно, имеет смысл, считать его в массив и преобразовать к double? А как его в массив считать ? Тут вот такое написано : автор(Datatype: packed BCD, right-padded with "0xF") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 14:52 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaТут вот такое написано : автор(Datatype: packed BCD, right-padded with "0xF") Значит у тебя, все-таки, двоично-десятичное. 1. счтываешь в массив, например функцией read. 2. потом берешь контейнер, типа long и обнуляешь его. 3. Если у тебя старший разряд первый, то берешь по байту с начала массива, умножешь на 10 и прибовляешь следующий. 4. Если у тебя старший разряд последний, что более вероятно, то делаешь то же самое но наоборот, т.е. кладешь в контейнер последний байт, умножаешь на 10, прибавляешь предпоследний, опять на десять, прибавляешь еще предыдущий и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 15:19 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
И еще один вопрос: а нафига вот это автор"0xF" нужно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 15:54 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
packed BCD вроде бы подразумевает ДВЕ десятичные цифры в байте ZedaИ еще один вопрос: а нафига вот это автор"0xF" нужно ? А ты это у автор а, которого цитируешь, спроси :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 16:00 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaИ еще один вопрос: а нафига вот это автор"0xF" нужно ? Я так понял, что имелось в виду в одном байте - одна цифра, что как правельно, заметил Barlone, запакованное двоично-десятичное число хранит в одном байте 2-е цифры. Можит и хотели написать и другое, что надо, мол, этой маской выделять цифры и не забывать сдвигать. Вообщем, гадание на кофейной гуще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 16:30 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaИ еще один вопрос: а нафига вот это автор"0xF" нужно ? Вероятнее всего это говорит о том, что значащие разряды сдвинуты в лево. А справа дополнены 0xF до необходимой длины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 16:58 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Так похоже, что число в 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) идти в асм, пробовать конвертить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:04 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
А может это дворик был? ;) Если есть пример файла, то проще определить по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:08 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Aklin....asm, там должно быть конвертирование.... ассемблер - набор инструкций проца... просветите пожалуйста - какая команда проца(и тип пожалуйста) - занимается "конвертацией" ??? заранее сэнкс (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:09 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
kolobok0 Aklin....asm, там должно быть конвертирование.... ассемблер - набор инструкций проца... просветите пожалуйста - какая команда проца(и тип пожалуйста) - занимается "конвертацией" ??? Помниться, что-то по работе с этими числами есть. Сейчас поищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:20 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
AkhВоот-с. Коррекции. Арифметические действия над неупакованными BCD-числами дык конвертация(чего и куда тогда?) или коррекция ? :) коррекция (asm)применяется после операций сложения над BCD числами..."упакованные-не упакованные" это от лукавого...процу похрену... другими словами Вы можете сложить 51h с 69h и вместо BAh получить 120h что при представлении в BCD и есть истина... сама команда должна следовать сразу после сложения (либо сложения с переносом)... Пример... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. теперь возвращаемся к баранам... ну и каким лешим Вы рекомендуете это ? с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:42 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
kolobok0 теперь возвращаемся к баранам... ну и каким лешим Вы рекомендуете это ? автор * сложение неупакованных BCD-чисел; * вычитание неупакованных BCD-чисел; * умножение неупакованных BCD-чисел; * деление неупакованных BCD-чисел; * сложение упакованных BCD-чисел; * вычитание упакованных BCD-чисел. Да, вроде, преобразования нет. Сейчас уже не помню. Давно это было, если бы про BCD не напомнили, так и не вспомнил бы вообще. ЗЫ: Если почитать топик, то моих рекомендаций по конвертированию в асме там нет. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:53 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Akh....ЗЫ: Если почитать топик, то моих рекомендаций по конвертированию в асме там нет. :) я просто о том, что Вы дали наименее трудное правильное решение..в азм - то явно перебор... с уважением (круглый) ЗЫ Про фразу с эфами - действительно просче будет взглянуть на пример упаковки... Сдаёться мне, что в каждый байт запхнули по одной тэтраде, с прижимом в право... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 17:59 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
kolobok0Про фразу с эфами - действительно просче будет взглянуть на пример упаковки... Сдаёться мне, что в каждый байт запхнули по одной тэтраде, с прижимом в право... Имхо, автор топика уже ушел асм изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 18:09 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
если считать что в 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 11:41 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
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. Код: plaintext 1. 2. Я считываю эти десят байт в массив по байту, далее для разбиваю каждый элемент этого массива на две тетрады Код: plaintext 1. 2. вроде как должно получится нормальное число. Так ни фига не получается не сходится почему-то. Вообще у кого небудь есть ссылка на доки по работе с BCD на С++ или С. Thanks. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 19:10 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Zedaразбиваю каждый элемент этого массива на две тетрады Код: plaintext 1. 2. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 22:06 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
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. Код: plaintext 1. 2. Я считываю эти десят байт в массив по байту, далее для разбиваю каждый элемент этого массива на две тетрады Код: plaintext 1. 2. 3. вроде как должно получится нормальное число. Так ни фига не получается не сходится почему-то. Вообще у кого небудь есть ссылка на доки по работе с BCD на С++ или С. Thanks. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 10:19 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
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. а что именно вызывает ошибку? я не понял, т.к. у меня все идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 10:20 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Можешь развить до вида, который тебе нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 10:30 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
contr Zedaразбиваю каждый элемент этого массива на две тетрады Код: plaintext 1. 2. Код: plaintext 1. 2. Спасибо огромное помогло. Но одно но, как мне теперь сравнить значение тетрад, т.е. мне надо сравнивать тетрады между собой и если значение тетрады равно "0xF"->15->1111 то нужно взять только все цифры полученные до этой тетрады. Подскажите как такое можно сделать в виде функции. причем все это дело критично по скорости... Подумываю, может на асме че нить .. или со вставками асмовски. Кстати, на счет вставок, доков про вставки эти найти не могу нигде, кто небудь знает какие там правила, чего нужно придерживаться?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 10:59 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaПодскажите как такое можно сделать в виде функции. И в каком виде функция должна это вернуть ? В int 10^20 не войдет, в double младшие разряды потеряются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 12:30 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
long long - 1.8*10^19 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 12:40 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
99999999999999999999 > 18446744073709551615 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:07 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Вобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:20 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки. еще: 1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга 2. Возможно, результат предствляетя в виде строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:27 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Akh BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки. еще: 1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга 2. Возможно, результат предствляетя в виде строки Не народ, тут все намного проще: В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:34 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Zeda....В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все. Как тут уже писалось выше - нуна организовать цикл, типа while.... где условие работы будет НЕ равенство с 0x0F. Сдвиги, как уже тут отмечалось и умножение на основание СС. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:41 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Т.е. мне в конечном итоге нужно получить эти цифры как стринг или char без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:45 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
Zeda Akh BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки. еще: 1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга 2. Возможно, результат предствляетя в виде строки Не народ, тут все намного проще: В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все. О как я угадал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:50 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaНо одно но, как мне теперь сравнить значение тетрад, Смотря как будет организоваваться цикл. Если за один проход будет анализ пары триады, то после анализа условие, будет содержать проверку 2-х триад, если по одной, то одна триада Получать триаду вы уже умеете, сравнить: trada != 0xf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 13:54 |
|
||
|
Помогите считать 10 байт ...
|
|||
|---|---|---|---|
|
#18+
ZedaТ.е. мне в конечном итоге нужно получить эти цифры как стринг или char без разницы. Прибавляйте к ранее полученным цифам 30 и будет Вам коды символов "0"-"9". Как объединить символы в строку, думаю, подсказывать особо не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 16:28 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2030667]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 527ms |

| 0 / 0 |
