我是一个用c语言做项目的python程序员,我需要将字母映射到与之对应的usb发送代码。在python中,我会在字典中硬编码。在C中,我使用了一个巨大的switch
语句。有更好的办法吗?
switch(c){
case 'a':
return "x04";
break;
case 'b':
return "x05";
break;
case 'c':
return "x06";
break;
最佳答案
对于我来说,我会创建一个查找表:
static char sendcodes[256][5]; // declared outside of any function;
// "static" means it's only visible
// within the current source file
void init_sendcodes( void )
{
for ( unsigned char c = 'a'; c <= 'z'; c++ )
sprintf( sendcodes[c], "%02hhx", c - 'a' + 4 );
}
char *mapSendcode( char c )
{
return sendcodes[c];
}
请注意,此代码假定
'a'
到'z'
是连续的编码(ASCII或UTF-8)。如果它们不是,那么,您将不得不使用多个循环。完成后,
sendcode['a']
包含字符串"0x04"
,sendcode['b']
包含"0x05"
,等等。因此,虽然初始化表需要一些工作,但只需在程序开始时执行一次,之后只是一次数组查找。关于c - 在c中将某些值映射到其他值的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48774550/