Mik*_*ike 6 string binary perl
在Perl中,将字符串用作包含8位数据的字节数组是否合适?我在这个主题上找到的所有文档都集中在7位字符串上.
例如,如果我从二进制文件中读取一些数据 $data
my $data;
open FILE, "<", $filepath;
binmode FILE;
read FILE $data 1024;
Run Code Online (Sandbox Code Playgroud)
我希望得到第一个字节,是否substr($data,1,1)合适?(再次,假设它是8位数据)
我来自一个主要是C的背景,我习惯于将char指针传递给一个read()函数.我的问题可能是我不明白字符串的底层表示是什么在Perl中.
read此处转载的命令的捆绑文档提供了许多与您的问题相关的信息.
read FILEHANDLE,SCALAR,LENGTH,OFFSET
read FILEHANDLE,SCALAR,LENGTH
尝试从指定的FILEHANDLE 读取数据的LENGTH 字符到变量SCALAR.返回实际读取的字符数,文件末尾为0,如果有错误则返回undef(后者也设置$!).SCALAR将增长或缩小,以便实际读取的最后一个字符是读取后标量的最后一个字符.
可以指定OFFSET将读取数据放在字符串中除开头之外的某个位置.负OFFSET指定从字符串末尾向后计数的多个字符的位置.大于SCALAR长度的正OFFSET会导致在附加读取结果之前将字符串填充到所需大小,并带有"\ 0"字节.
该调用实际上是根据Perl或系统的fread()调用实现的.要获得真正的read(2)系统调用,请参阅"sysread".
请注意字符:根据文件句柄的状态,读取(8位)字节或字符. 默认情况下,所有文件句柄都按字节操作,但是例如,如果已使用":utf8"I/O层打开文件句柄(请参阅"打开",并打开"打开"编译指示),则I/O将在UTF-8编码的Unicode字符,而不是字节. 类似地,对于":encoding"编译指示:在这种情况下,几乎可以读取任何字符.
| 归档时间: |
|
| 查看次数: |
11691 次 |
| 最近记录: |