标签: binary-data

编写二进制文件时Python中缺少字节?

在Python中编写二进制文件时,我似乎缺少一些字节.我已经尝试使用"write"函数和"array.tofile"函数.这是一些示例代码:

import zlib, sys, os, array
from struct import unpack
from array import array


inputFile = 'strings.exe'

print "Reading data from: ", inputFile

print 'Input File Size:', os.path.getsize(inputFile)

f = open(inputFile, 'rb')
#compressedDocument = 

document = f.read()
documentArray = array('c', document)
print 'Document Size:', len(documentArray)

copyFile = open( 'Copy of ' + inputFile, 'wb')
documentArray.tofile(copyFile)
#copyFile.write(document)
copyFile.close


print 'Output File Size:', os.path.getsize('Copy of ' + inputFile)

print 'Missing Bytes:', os.path.getsize(inputFile) - os.path.getsize('Copy of ' + inputFile)
f.close()
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

Reading data …
Run Code Online (Sandbox Code Playgroud)

python binary-data

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

从特定位置读取C#中的二进制文件

是否可以从特定位置读取大型二进制文件?

我不想从头开始读取文件,因为我可以计算出我需要的流的起始位置和长度.

c# binary-data

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

如何从指定位置的二进制文件中读取一个且仅一个字节?

我想知道是否可能在python中一次读取一个给定位置的一个字节.我知道,但我想要的东西返回我指定的字节,只返回我指定的字节.如果我写:,它会读取文件的前10个字节.file.read(any number)file.read(10)

我怎么说读字节10只返回字节10?(这必须适用于所有大于一的数字),也请不要上课!

python byte binaryfiles binary-data

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

在 Perl 中将二进制数据拆分为字节数组

我基本上想将二进制字符串转换为字节数组/列表(以便允许索引,并避免使用substr,因为它的语法对我来说使事情复杂化),我想出了以下MWE

#!/usr/bin/env perl

use warnings;
use strict;

# Use open ':raw';      # Unknown PerlIO layer class ':raw'
use open IO => ':raw';

binmode(STDIN);
binmode(STDOUT);

# Create original 8-bit byte array/list
my @atmp = (0x80, 0x23, 0x14, 0x0d, 0x0a, 0x00, 0x00, 0x80, 0x43, 0x00, 0x00);

# Make a copy of portion
my @atmp2 = (0) x 2;
@atmp2[0..1] = @atmp[7..8];

# Print output
print "Copied atmp2 contents as hex: " . join(", ", unpack("H2"x2, pack("C"x2,@atmp2))) …
Run Code Online (Sandbox Code Playgroud)

perl split unpack binary-data

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

八位字节(字节)填充和取消填充,即用两个或vv替换一个字节

我使用socket.recv()通过套接字(蓝牙)从设备接收二进制数据.

我已经考虑过在列表或bytearray中进行缓冲,直到收到足够的数据进行解码和操作.也就是说,直到我收到一个开始和停止标志(字节).

但是,该设备正在应用"八位字节填充".也就是说,下面两个字节的每次出现都应该用一个字节替换,如下所示:

dic = { '\xFE\xDC' : '\xFC' , '\xFE\xDD' : '\xFD' , '\xFE\xDE' : '\xFE'}
Run Code Online (Sandbox Code Playgroud)

此外,在发送数据时,应该应用相反的操作.例如,一个字节0xFC - >产生两个字节0xFE,0xDC.

真正发生的是当填充(发送数据)时,如果检测到0xFC,0xFD,0xFE之一,则在字节之前添加0xFE,该字节本身是异或0x20.在取消填充(接收数据)时,0XFE被丢弃,后面的字节被异或为0x20.

说我对Python很陌生是一种轻描淡写的说法.我昨天开始编码,有一个界面启动并运行.然而,这有点棘手.

我知道我可以将数据放入字符串并进行替换.但是要将二进制数据打包成字符串,替换然后解压缩和解码似乎有点低效.

我还可以观察传入的数据,并在看到0xFE标志时动作.什么是好的是填充/取消列表,bytearray等等的方法.

替换列表或bytearray中的单个字节似乎并不太难,但用两个或另一个方式替换一个...?

任何帮助非常感谢.

(顺便说一下,这是Python 2.7.)

python bytearray list binary-data

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

如何基于data.table中的分类变量以编程方式创建二进制列?

我有一个很大的(1200万行)data.table,看起来像这样:

library(data.table)
set.seed(123)
dt <- data.table(id=rep(1:3, each=5),y=sample(letters[1:5],15,replace = T))
> dt
    id y
 1:  1 b
 2:  1 d
 3:  1 c
 4:  1 e
 5:  1 e
 6:  2 a
 7:  2 c
 8:  2 e
 9:  2 c
10:  2 c
11:  3 e
12:  3 c
13:  3 d
14:  3 c
15:  3 a
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的data.table包含我的变量id(这将是这个新的独特的键data.table)和其他5个二元变量每一个对应于每个类别的y内搭的值1,如果ID对于该值y,0否则.
输出data.table应如下所示:

   id a …
Run Code Online (Sandbox Code Playgroud)

r binary-data programmatically-created data.table

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

将一列从分类转换为二进制,保留其余列

我有一个中等大的数据帧,我想要将一个列的类别转换为二进制列,每个类别一个.

同时,我希望将其余列保留在数据框中.

实现这一目标最简单的方法是什么?

这是我想要做的一个例子:

d<-data.frame(ID=c("a","b","c","d"), Gender=c("male", "male", "female","female"), Age =c(23,45,18,11))

 ID Gender Age
1  a   male  23
2  b   male  45
3  c female  18
4  d female  11
Run Code Online (Sandbox Code Playgroud)

之后应该看作d2,这样ID和Age列仍然存在并且不受影响:

d2<-data.frame(ID=c("a","b","c","d"), Gender.male=c(1, 1, 0, 0), Gender.female=c(0,0,1,1), Age =c(23,45,18,11))

  ID Gender.male Gender.female Age
1  a           1             0  23
2  b           1             0  45
3  c           0             1  18
4  d           0             1  11
Run Code Online (Sandbox Code Playgroud)

r transformation binary-data one-hot-encoding

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

Python: Similar functionality in struct and array vs ctypes

Python provides the following three modules that deal with C types and how to handle them:

  • struct for C structs
  • array for arrays such as those in C
  • ctypes for C functions, which necessarily entails dealing with C’s type system

While ctypes seems more general and flexible (its main task being “a foreign function library for Python”) than struct and array, there seems to be significant overlap in functionality between these three modules when the task is to read …

python arrays struct ctypes binary-data

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

在python中读取二进制数据文件进行分析

我使用 Fortran 按以下格式将数据写入二进制文件

open(unit=99,form='unformatted',status='unknown')
do i=1,N
write(99) (i),(A(i)),(B(i))
enddo
close(99)
Run Code Online (Sandbox Code Playgroud)

这里,AB是双精度数组。如何在python中读取这个二进制数据文件?

PS:到目前为止,我尝试了以下步骤来读取数据。

with open('fort.99', 'rb') as binfile:
    data=binfile.read()
Run Code Online (Sandbox Code Playgroud)

虽然文件读取成功,但我无法使用numpy这些数据的功能,这是我大多数分析的首选。

python fortran numpy binary-data

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

单个字节如何容纳 -128 值

在内存中 128 将被存储为10000000. 如果我在字节数据类型中存储 -128,我应该在哪里放置符号位,因为整个 1 字节被数字 128 占用?

你能解释一下吗?

c binary-data

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