gpt4 book ai didi

c - 为 RPC 编码字符串和整数

转载 作者:行者123 更新时间:2023-11-30 17:15:45 25 4
gpt4 key购买 nike

我需要进行 RPC。我正在尝试对函数名称的长度进行编码,后跟函数名称。

Function name: say_hello
Function name length: 9
Encoded array: [9, 's', 'a', 'y', ..., 'l', 'l', 'o']

到目前为止:

unsigned char* encode_int(unsigned char *buffer, int value) {
buffer[0] = value >> 24;
buffer[1] = value >> 16;
buffer[2] = value >> 8;
buffer[3] = value;
return buffer + 4;
}

char* function_name = "say_hello";
char* buffer[256];
buffer = encode_int(&buffer, strlen(function_name));
strcpy(buffer, function, strlen(function_name));
puts(buffer);

最佳答案

您的代码存在很多问题。我不仅会给你一个可行的解决方案,还会指出问题。首先,代码显然无法编译。您将 undefined variable function 传递给 strcpy,并为 strcpy 提供了太多参数。我假设你刚刚错误地转录了程序。但即使您解决了这个问题,您也会收到一些编译器警告,如果注意这些警告,就会发现您的大多数问题。

  1. 您将 buffer 的地址而不是 buffer 本身传递给 encode_int
  2. 您将 buffer 声明为字符指针数组。看起来您真正想要的是一个 char 数组。
  3. 将 int 编码到缓冲区的开头。然后尝试将其打印为字符串(通过 puts)。这是行不通的,并且会导致没有输出(正如您可能已经发现的那样)。因为 int 在第一个字节中将具有 0 值(正如您对其进行编码的那样)。这是字符串的空终止符,因此是空白输出。

编辑:更正第 3 点。您实际上已将 buffer 增加了 4(如果其他所有内容均已修复)。因此,puts 只会显示函数名称(同样,如果其他所有内容都已修复)。并且您实际上已经丢失了函数名称长度。

关于c - 为 RPC 编码字符串和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29877136/

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