我发现文件接收器块生成的文件是二进制格式, 哪个不能用linux下的gedit编辑或其他东西, 那我怎么编辑文件呢?
我发送的dat文件包含" hello world"我想收到一个包含" hello world"
的文件答案 0 :(得分:3)
这是经常被问到的。所以这里是link to the FAQ和摘录:
所有文件都是纯二进制格式。只是位。而已。浮点数据流在文件中一个接一个地保存为32位。复数信号对于实部具有32位,对于虚部具有32位。读回一个复数意味着读取32位,将其保存到复杂数据结构的实部,然后读取接下来的32位作为数据结构的虚部。并继续阅读数据。
使用Octave和Python的Scipy模块查看
gr-utils
中的Octave和Python文件以读取数据。格式的例外是使用元数据文件格式时。这些文件由File Meta Sink:http://gnuradio.org/doc/doxygen/classgr_1_1blocks_1_1file__meta__sink.html块生成,并由File Meta Source块读取。有关如何处理这些文件的详细信息,请参阅元数据文件格式的手册页。
将整个文件读入numpy数组的单行Python命令是:
f = scipy.fromfile(open("filename"), dtype=scipy.uint8)
用scipy.int16,scipy.int32,scipy.float32,scipy.complex64或您使用的任何类型替换dtype。
所以你的问题"我如何编辑这个?"归结为理解这是原始数据。你当然可以在字节级别修改它(例如使用hexeditor),但通常,你有(或写)一些程序将数据加载到程序中的表示(例如复数数组) )看看那个。
您提出此问题的方式表明您并未真正意识到您正在查看的内容(因为您甚至没有提及 您传输的内容 那个字符串)。也许您的数据由于噪声引起的符号错误而导致误码?很可能,没有完成同步,所以你收到的比特并没有像你发送的那样以字节顺序结束等等。
我认为这可能是指向GNU Radio Guided Tutorials。
的好地方