是一个数字,例如十六进制的 100000 或 186a0。这是一个由 17 个字符组成的二进制数,这意味着它将适合 3 字节数组。问题是如何正确地将这个数字塞入数组的这 3 个字节中。我尝试使用 sprintf 将数字转换为十六进制,将生成的字符串拆分为每个包含 2 个元素的子字符串,并使用 atoi 将这些子字符串的值分配为转换为数字的数组的字节。但这是错误的做法。这是通过 WS 协议发送值所必需的,并且可以使用每个项目的操作对其进行解密。请告诉我该怎么做
是一个数字,例如十六进制的 100000 或 186a0。这是一个由 17 个字符组成的二进制数,这意味着它将适合 3 字节数组。问题是如何正确地将这个数字塞入数组的这 3 个字节中。我尝试使用 sprintf 将数字转换为十六进制,将生成的字符串拆分为每个包含 2 个元素的子字符串,并使用 atoi 将这些子字符串的值分配为转换为数字的数组的字节。但这是错误的做法。这是通过 WS 协议发送值所必需的,并且可以使用每个项目的操作对其进行解密。请告诉我该怎么做
例如,使用按位运算,您可以使用逻辑乘法提取最低有效位
然后你将 s 向左移动一位并重复操作 - 你得到以下位:
等等
好吧,你把它放在一个循环中,迭代次数应该与 int 类型占用的数字一样多:
好吧,将一个数字分成字节也很简单——使用相同的逻辑乘法:
您以相同的方式提取其余字节,只是现在您将数字 s 移动了八位: