【发布时间】:2018-08-02 04:49:08
【问题描述】:
大家好,希望能在这里遇到一些字节串专家。 我猜 SvPVbyte 会发挥作用,但如何?
我的问题。 我已经在 Inline:C 中使用 Perl 成功地解析了 Perl 数组 XYZ(在数组的哈希中),例如索引 6789:
$testn=pnp($lengthofXYZ,\@{$XYZ{$_}});
内联 C:
int pnp ( int n, SV *vertx)
AV *arrayx;
double val_of_interest;
arrayx = (AV *)SvRV( vertx );
SV **yi;
yi = av_fetch( arrayx, 6789, 0 );
val_of_interest = SvNV( *yi );
return calculation_with_val_of_interest
这非常有效。但是假设我在 Perl 中有一个很长的字节字符串(大约 10-50MB) $xyz="\x09\x07\x44\xaa......
现在我想传递对这个 SV 的引用,并在 C 部分中以 9 个字节的步长(类似 substr)遍历这个字符串,而不是将其完全复制到自己的 C 数组中。
步行部分: 前 4 个字节应与参考 4 字节值 ABC 进行检查,该值也应在函数调用中。如有必要,我可以在此之前解压缩“N”这个搜索短语并使用整数调用函数。 如果位置 0 没有成功跳转/增加 9 个字节,如果成功我会将找到的位置作为返回。
非常感谢。
【问题讨论】:
标签: perl byte inline substr perlapi