首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在int数据类型中使用chars

问在int数据类型中使用chars
EN

Stack Overflow用户
提问于 2018-03-04 05:39:39
回答 1查看 69关注 0票数 0

使用C,一个具有5个内存空间的数组

代码语言:javascript
复制
int call[5]

我试图弄清楚如何使用数组的前3个空格进行基-36转换(意味着1K0基-36等于基础-10中的2040 ),其他两个空格将被填充数据(可能更多的in )。

然而..。1K0看起来像int吗?(对我来说,K看起来像个字符,理论上,char应该足够-127到127,用于使用base-36)。

但是,如果我尝试使用int而不是char来做这件事,会发生什么呢?

在第一个数组中是否有任何替代方法来使用基-36转换,仅对内存中的其余空格使用in。

有关系吗?(因为数组被声明为int)

编辑:要弄清楚,我只想知道我是否可以声明一个int数组并填充它的字符,如果我不能,我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-03-04 06:07:36

我不确定你是否能告诉编译器,你可以向十六进制(0x),八进制(o)二进制(b)信号,但基数36是奇怪的,不符合标准。

您可以始终创建一个函数(并可能将其嵌入到类中),该函数执行基36的字符串到base 10的转换。

我会尽我最大的努力

代码语言:javascript
复制
int base10Number = 0
int base36StringLenght = strlen(base35String);
for( int i = base36StringLenght - 1; i <= 0; i--){ //count from the end of the string back
  char c = base36String[i];
  if(c <= '9'){
    c -= '0' //gives a 0 to 9 range
  }
  else{ //assuming that the string is perfect and has no extra characters is safe to just do this
    c = tolower(c); //first make sure it's lowercase
    c -= 'a' + 10 // this will make the letters start at 10 dec
  }
  base10Number += c * pow(36, base36StringLenght - 1 - i) // the power function specifies which 'wheel' you're turning (imagine an old analog odometer) and then turns the wheel c times, then adds it to the overall sum.
}

整个代码的工作原理是,从最后一个数字开始的每一个数字都值它的基数10,乘以36,再到最后一个位置的幂。最后一个数字是c* 36^0,它是1,c*36^1等等。类似于2*10^1等于20,如果2处于倒数第二位.

希望这些都对你有意义,别忘了把你的base36数字变成一个字符串。

编辑:我看到了您对答案的编辑,简短的是,您完全可以这样做,这将是浪费空间,因为您将有整整3个字节在任何时候都未使用,您可以简单地创建一个char数组。此外,所有字符串函数都将要求您为它们提供一个char数组(您可以转换它),但是如果每个数组存储一个数字,空间char就能做到这一点。如果您的数组是动态的,并且/或您需要对其进行一些计算,那么基本36到基本10的转换将允许您进行计算,并为单个int或float类型吹掉整个数组。但是,如果您只是要存储它,以便稍后显示它,或者将它以相同的格式提供给另一个函数,则根本不需要转换。(如果您正在处理大量的这些数字,并且需要将它们放在数据库中,转换为base10并存储在一个单独的数据库中,将节省大量的空间)

PS:还编辑了代码使用‘’封闭字符,而不是ascii数字,谢谢您的要求!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49092365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档