gpt4 book ai didi

将十六进制数数组转换为 unsigned char* for Inline::C

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:43 27 4
gpt4 key购买 nike

我需要将一个十六进制数数组转换为一个字符串,这样它就可以作为一个无符号字符 * 传递给 C 函数(使用 Inline::C),然后可以将其放入一个字节数组中:

my @hex_vals = (0x06, 0x0D, 0x04, 0x16, 0x19, 0x0);

在 C 端,函数如下所示:

void takeMessage(unsigned char *message)
{
unsigned char stuff[1088];
stuff[0] = message[0];
stuff[1] = message[1];
...
}

使 Inline::C 部分正常工作,只是尝试打包字符串。谢谢

最佳答案

takeMessage(pack 'C*', @hex_vals)

在 XS 方面,我会使用

void takeMessage(SV* message_sv)
{
STRLEN len;
unsigned char* message_buf = (unsigned char*)SvPVbyte(message_sv, len);
unsigned char stuff[1088];

if (len > 1088)
croak("...");

Copy(message_buf, stuff, len, unsigned char);

...
}

关于将十六进制数数组转换为 unsigned char* for Inline::C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com