grep + excel Как эксель сохраняет числа в ячейке General?
я не доктор, но не пробовали ли вы искать в файле число в том виде, в котором принято хранить числа в памяти компа?
Хранит он их как-то очень хитро. Короче, либо ищи эту инфу в нете, либо вооружайся TotalComander'ом для сравнения двух файлов в hex-формате и калькулятором hexit (http://www.wfwsoftware.com/) для пересчета чисел между типами (или воспользуйся online калькулятором: http://babbage.cs.qc.edu/IEEE-754/Decimal.html).
Алгоритм следующий: сохраняешь файл Excel с одним единственным листом и одной единственной непустой ячейкой, в которой выставляешь тип "Общий". Вбиваешь в эту ячейку число, например 35, сохраняешься под именем "Книга1.xls". Вбиваешь другое число, например 36, сохраняешь как "Книга2.xls". сравниваешь два файла в Тотале, находишь, где у тебя хранится содержимое этой ячейки. У меня это оказалось по смещению 0A38. Далее, меняя чиселку в экселе и сохраняя файл, смотришь, как Excel хранит разные числа.
Вот тебе небольшая подсказка, которую я обнаружил:
Число 35 он хранит в виде 00 00 80 41 40, где первые два байта - это хз что, а три последних - последние три байта числа 35 в формате Double Real с обратным порядком байтов (35 = 00 00 00 00 00 80 41 40).
Число 35,1 он хранит в виде 00 01 6C AB 40, где хз что равно 01, а само число он записал как 3510 (3510 = 00 00 00 00 00 6C AB 40)
Число 35,11 он хранит в виде 00 01 6E AB 40, где хз опять 01, а само число равно 3511 (3511 = 00 00 00 00 00 6E AB 40)
Число 35,111 он уже записывает в полноценном Double Real с обратным порядком байтов (35,111 = 91 ED 7C 3F 35 8E 41 40).
То есть, у него есть как минимум три типа хранения чисел - для небольших целых он записывает только их три значащих байта, для чисел побольше и чисел с небольшим количеством знаков после запятой - второй, экспоненциальный формат, а для тех чисел, что не влезают во второй формат - честно записывает их в Double Real с обратным порядком байтов.
P.S. Сильно не пинать, я не программер, просто поковырялся в файлах и попытался найти хоть какую-нибудь закономерность.
P.P.S. Если не в курсе про машинное представление чисел, советую начать читать здесь: http://en.wikipedia.org/wiki/IEEE_754
Алгоритм следующий: сохраняешь файл Excel с одним единственным листом и одной единственной непустой ячейкой, в которой выставляешь тип "Общий". Вбиваешь в эту ячейку число, например 35, сохраняешься под именем "Книга1.xls". Вбиваешь другое число, например 36, сохраняешь как "Книга2.xls". сравниваешь два файла в Тотале, находишь, где у тебя хранится содержимое этой ячейки. У меня это оказалось по смещению 0A38. Далее, меняя чиселку в экселе и сохраняя файл, смотришь, как Excel хранит разные числа.
Вот тебе небольшая подсказка, которую я обнаружил:
Число 35 он хранит в виде 00 00 80 41 40, где первые два байта - это хз что, а три последних - последние три байта числа 35 в формате Double Real с обратным порядком байтов (35 = 00 00 00 00 00 80 41 40).
Число 35,1 он хранит в виде 00 01 6C AB 40, где хз что равно 01, а само число он записал как 3510 (3510 = 00 00 00 00 00 6C AB 40)
Число 35,11 он хранит в виде 00 01 6E AB 40, где хз опять 01, а само число равно 3511 (3511 = 00 00 00 00 00 6E AB 40)
Число 35,111 он уже записывает в полноценном Double Real с обратным порядком байтов (35,111 = 91 ED 7C 3F 35 8E 41 40).
То есть, у него есть как минимум три типа хранения чисел - для небольших целых он записывает только их три значащих байта, для чисел побольше и чисел с небольшим количеством знаков после запятой - второй, экспоненциальный формат, а для тех чисел, что не влезают во второй формат - честно записывает их в Double Real с обратным порядком байтов.
P.S. Сильно не пинать, я не программер, просто поковырялся в файлах и попытался найти хоть какую-нибудь закономерность.
P.P.S. Если не в курсе про машинное представление чисел, советую начать читать здесь: http://en.wikipedia.org/wiki/IEEE_754
и чисел с небольшим количеством знаков после запятойЯ бы даже сказал, с не более чем двумя знаками после запятой, причём, такие числа приводятся к двум знакам после запятой, судя по твоему посту.
У меня такое ощущение, что это деньги.
Хинт: может стоит сохранить твой экселевский файл как .csv и искать в нем? Потому что в csv все числа хранятся в обычном текстовом формате.
Ну ты просто хакер, завтра почитаю про машинный код.
ЗЫ не деньги, целые числа, идентификаторы своеобразные.
ЗЫ не деньги, целые числа, идентификаторы своеобразные.
Оставить комментарий
12345
Хочу найти с помощью этой команды какое-то число, встречающееся в фале.Если число сохранено как текст, то ищет нормально, а если тип ячейки General, то не ищет.
Вообщем возможно ли узнать, что данное число находится в этом файле?