Вам нужен сервер для этого. Загрузите все фотографии на сервер, и другие устройства могут загружать фотографии оттуда. Отправка огромных скриншотов занимает много времени, а для некоторых пользователей это стоит денег. TeamViewer и Skype делают следующее:
Есть много способов для этого. Вы можете использовать этот пример кода в качестве ссылки: https://github.com/Temasys/skylink-android-screen-sharing
Я думаю, что Вы на самом деле читаете число правильно, но запутываетесь дисплеем. Когда я считал число из Вашего обеспеченного файла, я добираюсь"3.907985046680551e-14
"-это почти, но не совсем обнулите (0.000000000000039 в расширенной форме). Я подозреваю, что Ваш код C просто печатает его с меньшей точностью, чем Python.
[Редактирование] я только что попытался читать файл в C, и я получаю тот же результат (хотя немного меньше точности: 3.90799e-14) (использующий printf (" %g", val)), таким образом, я думаю, является ли это значение неправильным, это произошло на стороне записи, а не чтении.
Вы могли уточнить, "не работал"? Команда отказывала? Данные выходили неправильно? Что на самом деле произошло?
Если разрушенная команда:
Если данные просто вышли неправильно:
Системы, которые создают и считывают данные, имеют тот же порядок байтов? Если Вы - обратный порядок байтов, и другой прямой порядок байтов, то необходимо указать преобразование порядка байтов в строке формата.
Если порядок байтов этих двух компьютеров является тем же, как данные были записаны в файл, точно? Вы знаете? Если Вы делаете, то, что значение было записано в файл и каково было неправильное значение, которое Вы вынули?
f.read(8)
мог бы возвратить меньше чем 8 байтовДанные могли бы иметь другое выравнивание и/или порядок байтов:
>>> for c in '@=<>':
... print repr(struct.pack(c+'d', -1.05))
...
'\xcd\xcc\xcc\xcc\xcc\xcc\xf0\xbf'
'\xcd\xcc\xcc\xcc\xcc\xcc\xf0\xbf'
'\xcd\xcc\xcc\xcc\xcc\xcc\xf0\xbf'
'\xbf\xf0\xcc\xcc\xcc\xcc\xcc\xcd'
>>> struct.unpack('<d', '\xbf\xf0\xcc\xcc\xcc\xcc\xcc\xcd')
(-6.0659880001157799e+066,)
>>> struct.unpack('>d', '\xbf\xf0\xcc\xcc\xcc\xcc\xcc\xcd')
(-1.05,)
Во-первых, Вы попробовали рассол? Никто еще не показал кода Python... Вот некоторый код для чтения в двоичном файле в Python:
import Numeric as N
import array
filename = "tmp.bin"
file = open(filename, mode='rb')
binvalues = array.array('f')
binvalues.read(file, num_lon * num_lat)
data = N.array(binvalues, typecode=N.Float)
file.close()
Где f здесь указал 4-байтовое плавание с одинарной точностью, числа. Найдите любой размер, который Ваши данные на запись, и используйте это.
Для не двоичные данные Вы могли сделать что-то простое как это:
tmp=[]
for line in open("data.dat"):
tmp.append(float(line))
Лучший метод должен был бы использовать текстовый ASCII-файл:
0.0
3.1416
3.90798504668055
в этом это было бы портативно и работало бы с любым видом реализации с плавающей точкой в известной степени.
Чтение необработанных двоичных данных с a double
адрес памяти не является портативным вообще и обязан перестать работать в некоторой другой реализации.
Можно, конечно, использовать двоичный формат для компактности, но портативная функция C, пишущая в том формате, не была бы похожа отрывок вообще.
По крайней мере код должен быть окружен серией ifs/ifdefs, проверяющего что представление памяти double
s используемый текущей машиной точно соответствует той, ожидаемой интерпретатором Python.
Написание такого кода было бы трудным, который является, почему я предлагаю легкое, чистое, портативное и человекочитаемое решение текста ASCII.
Это было бы моим определением "лучше всего".