gpt4 book ai didi

将 char 数组中的内容转换为 C 中的十六进制(例如 : {'5' , 'A' } 到 0x5A)

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:31 24 4
gpt4 key购买 nike

我需要将 stringList 中的内容修改为十六进制,并且我需要在 MyFunction 中进行修改,因为 WriteI2C 需要取一个十六进制值。例如,如果 stringList 包含“5”和“A”,我想将 0x5A 传递给 WriteI2C

char* stringList[5]; // array of strings (max 5 strings)
char* (*stringListPtr); // pointer to a string

void MyFunction(char* (char* (*stringListPtr))
{
WriteI2C(a hex value); // ex: WriteI2C(0x5A);
}

最佳答案

您可以使用以 NUL 结尾的 char 数组(又名 C 字符串)吗?如果是这样:

const char *str = "5A";
int val = strtol(str, NULL, 16);
WriteI2C(val);

如果没有,您可能想要制作一个以 NUL 结尾的副本,或者重新发明轮子(注意:不要重新发明轮子):

int ch2hex(char ch)
{
if (isdigit(ch)) return ch - '0';
if (islower(ch)) return ch - 'a' + 10;
if (isupper(ch)) return ch - 'A' + 10;
// if this is reached, something very nasty is going on
}

int str2hex(char arr[2])
{
return (ch2hex(arr[0]) << 4) | ch2hex(arr[1]);
}

关于将 char 数组中的内容转换为 C 中的十六进制(例如 : {'5' , 'A' } 到 0x5A),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739432/

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