标签: binary-data

自定义数据iostream

我有一个定义为的数据结构

struct myDataStruct
{
   int32_t header;
   int16_t data[8];
}
Run Code Online (Sandbox Code Playgroud)

我想获取一个字符流并将其转换为myData流.我应该扩展哪个流类?我想创建一个自定义流类,以便我可以做类似的事情

myDataStruct myData;
myDataStruct myDataArray[10];

myDataStream(ifstream("mydatafile.dat"));
myDataStream.get(myData);
myDataStream.read(myDataArray, 10);
Run Code Online (Sandbox Code Playgroud)

c++ iostream stream binary-data

3
推荐指数
1
解决办法
968
查看次数

Python二进制数据读取

urllib2请求接收二进制响应,如下所示:

00 00 00 01 00 04 41 4D 54 44 00 00 00 00 02 41
97 33 33 41 99 5C 29 41 90 3D 71 41 91 D7 0A 47
0F C6 14 00 00 01 16 6A E0 68 80 41 93 B4 05 41
97 1E B8 41 90 7A E1 41 96 8F 57 46 E6 2E 80 00
00 01 16 7A 53 7C 80 FF FF
Run Code Online (Sandbox Code Playgroud)

其结构是:

DATA, TYPE, DESCRIPTION

00 00 …
Run Code Online (Sandbox Code Playgroud)

python binary-data

3
推荐指数
3
解决办法
1万
查看次数

使用Python,如何从具有多个可变长度记录的二进制数据文件中读取和提取数据?

使用Python(3.1或2.6),我试图从GPS接收器生成的二进制数据文件中读取数据.每小时的数据存储在一个单独的文件中,每个文件大约18 MiB.数据文件有多个可变长度记录,但是现在我需要从其中一个记录中提取数据.

我已经有了能够解码头部的程度.我有点说,因为有些数字没有意义,但大多数都没有.花了几天时间(我开始学习使用Python编程),我没有取得进展,所以是时候寻求帮助了.

参考指南为我提供了消息头结构和记录结构.标头长度可变,但通常为28个字节.

Header
Field #  Field Name    Field Type    Desc                 Bytes    Offset
1        Sync          char          Hex 0xAA             1        0
2        Sync          char          Hex 0x44             1        1
3        Sync          char          Hex 0x12             1        2
4        Header Lgth   uchar         Length of header     1        3
5        Message ID    ushort        Message ID of log    2        4
8        Message Lgth  ushort        length of message    2        8
11       Time Status   enum          Quality of GPS time  1        13
12       Week          ushort        GPS week number      2 …
Run Code Online (Sandbox Code Playgroud)

python gps binary-data

3
推荐指数
1
解决办法
6172
查看次数

C# - 可以将二进制数据编译成模块吗?

我想在C#模块中包含一个大型查找表(100,000个3字节值).

是否有编译器指令将外部文件中的二进制数据加载到静态字符串中?

c# binary-data

3
推荐指数
1
解决办法
106
查看次数

使用一个字节表示3个整数?

我有三个整数{ a,b,c下面的值之间}该范围(比方说):

a - {1到120,跳跃1}

b - {-100到100,跳跃为5}

c - {1到10,跳跃1}

由于空间的考虑,我想表示使用1字节ONLY,意义,一个整数(在-127..128的范围内)这三个值将代表的{结果a,b,c},并被存储在二进制格式化为磁盘.

后来,当我读到的二进制数据,我会知道如何"解析"这1个字节得到的值{ a,b,c}.

知道如何实现吗?(注意:如果需要,为了支持这种设计,我可以在范围上"妥协";例如,a可以在5的跳跃中b也可以在10等的跳跃中)

binary-data character-encoding primitive-types

3
推荐指数
1
解决办法
1925
查看次数

用于从文件中读取字符串的编码?

我正在解析包含字符串的文件(我不生成).字符串总是以2个字节开头,告诉我后面的字符串的长度.

例如:

05 00 53 70 6F 72 74
Run Code Online (Sandbox Code Playgroud)

将会:

Sport
Run Code Online (Sandbox Code Playgroud)

使用C#BinaryReader,我使用以下方法读取字符串:

string s = new string(binaryReader.ReadChars(size));
Run Code Online (Sandbox Code Playgroud)

有时会出现奇怪的时髦角色,这似乎会推动流的位置超出应有的位置.例如:

0D 00 63 6F 6F 6B 20 E2 80 94 20 62 6F 6F 6B
Run Code Online (Sandbox Code Playgroud)

应该:

cook - book
Run Code Online (Sandbox Code Playgroud)

虽然它读得很好,但流最终会比它应该延伸两个字节?!(然后会弄乱其余的解析.)

我猜它与中间的0xE2有关,但我不确定为什么或如何处理它.

任何建议都非常感谢!

c# string encoding binary-data character-encoding

3
推荐指数
1
解决办法
2042
查看次数

CS基础知识:了解数据包,协议,Wireshark

任务

我正试图通过RCON协议从node.js与SRCDS服务器通信.RCON协议似乎已经足够解释,可以在每个主要编程语言的网站底部找到实现.使用它们很简单,但理解协议和开发JS库是我打算做的.

背景

作为一名自学成才的程序员,我跳过了很多计算机科学基础知识 - 只学习了我需要的东西,完成了我想要的东西.我开始使用PHP进行编码,最终围绕OO,与数据库等进行了交谈.我目前正在使用JavaScript进行编程,更具体地说是使用node.js进行Web编写.

二进制数据?!?!

我已阅读并理解绝对二进制基础知识.但是当谈到数据包数据时,我完全迷失了.我想阅读并理解wireshark输出,但是如果它没有任何意义.我最大的问题可能是我不明白JS的各种INT和STRING(char ..)的二进制表示是什么样的,以及我如何将从服务器获得的数据转换为程序中可用的东西.

救命

如果有人能指点我这些主题的教程,我将不胜感激.教程,如"只有凡人才能理解的解释,最好不是由CS教授写的".:)当我看到PHP参考实现时,我看到(太多)魔术发生在那里我无法翻译成JS.从套接字发送和读取数据没有问题,但我需要知道PHPs解包函数如何分别如何在JS中使用node.js.

所以我希望你能看到我在这里想要完成的事情.首要的是理解实现协议所需的整个理论.但是因为我只使用脚本语言,如果有人可以在PHP/JS的HOWTO部分中指导我,那将会非常有用.

非常感谢您的参与!

javascript protocols binary-data wireshark node.js

3
推荐指数
1
解决办法
1704
查看次数

在Scala中的文件中有效地存储Long序列

所以我有一个关联将一对Ints与一个Vector[Long]最大为10000 的s 相关联,并且我有几十万到一百万这样的数据.我想将它存储在一个文件中,以便以后在Scala中处理.

显然,以纯文本格式存储它会占用太多空间,所以我一直试图通过编写Byte流来弄清楚如何做到这一点.但是我不太确定这是否会起作用,因为在我看来byteValue(),a Long返回Byte仍然是4个字节长的表示,因此我不会保存任何空间?我没有太多使用二进制格式的经验.

似乎Scala标准库有BytePickle可能是我想要的,但后来被弃用了?

byte scala binaryfiles bytearray binary-data

3
推荐指数
2
解决办法
819
查看次数

HDF5用于用fortran编写的数据文件

HDF5数据存储使用C约定,即如果我在二进制文件中存储矩阵A(N,M,K),则存储数据的最快变化维度将具有N.显然当我使用Fortran包装器时HDF5,HDF5自动转换矩阵,与C一致.

我有一个大小(256乘128乘256)的数据存储在fortran编写的无格式二进制文件中.我试图通过使用下面给出的程序将其转换为h5格式.但最终输出给出了存储矩阵的维数(128,256,256).我不知道如何确保最终的hd5文件可以在可视化软件(Paraview)中正确显示.

PROGRAM H5_RDWT

 USE HDF5 ! This module contains all necessary modules

 IMPLICIT NONE


 CHARACTER(LEN=6), parameter :: out_file = "out.h5"  ! File name
 CHARACTER(LEN=6), parameter :: in_file  = "in.dat" ! File name
 CHARACTER(LEN=4), parameter :: dsetname =  "vort"! Dataset name
 CHARACTER(LEN=50) :: len

 INTEGER(HID_T) :: in_file_id   ! File identifier
 INTEGER(HID_T) :: out_file_id  ! File identifier
 INTEGER(HID_T) :: dset_id      ! Dataset identifier
 INTEGER(HID_T) :: dspace_id    ! Dataspace identifier

 INTEGER :: in_file_id = 23

 INTEGER     :: nx = 256, ny=128, nz=256 …
Run Code Online (Sandbox Code Playgroud)

fortran hdf5 binary-data paraview

3
推荐指数
2
解决办法
3094
查看次数

深入理解二进制文件

我正在学习C++特别关于二进制文件结构/操作,因为我对二进制文件,位,咬和十六进制数字的主题完全不熟悉,所以我决定向后退一步,对主题建立一个扎实的理解.

在下面我已经包含的图片中,我blue thief在一个.txt文件中写了两个单词().

在此输入图像描述

原因是,当我使用hexeditor解码文件时,我想了解信息是如何以十六进制格式存储的.现在,不要误解我的意思,我并不是试图通过整天阅读十六进制格式来谋生,而只是对二进制文件组合的基本知识有最低限度的理解.我也知道所有文件都有不同的结构,但只是为了理解,我想知道,"蓝色小偷"和单个' '(空格)这些词是如何被转换成这些字符的.

还有一件事是,我听说二进制文件包含三种类型的信息:

header,ftm&和data!那只关注音频,视频等多媒体文件吗?因为,我似乎看不到任何东西,除了它看起来data只是这个文件中的一块.

windows hex bits hex-editors binary-data

3
推荐指数
1
解决办法
1464
查看次数