【问题标题】:Putting check digit in to form ISBN 10输入校验位以形成 ISBN 10
【发布时间】:2012-08-10 17:05:26
【问题描述】:

我正在做一个条形码扫描仪,并在应用内将 ISBN13 转换为 ISBN10。我现在可以计算出 ISBN 10 的校验位,但我不知道如何将其连接回 10 位数字。

我所做的是取出条形码 9780340961391 的前缀“978”,然后留下 0340961391,我只取出 9 位数字,省略 isbn 13 的校验位 1,然后留下034096139。

然后我计算isbn10的校验位为2。现在的问题是如何将其添加到034096139以形成0340961392的最终ISBN10?谢谢:)

【问题讨论】:

  • 或者对于一个NSNumber,theNSNumber = [NSNumber numberWithInt:[theNSNumber intValue] * 10 + digit];

标签: iphone ios integer nsnumber isbn


【解决方案1】:

我假设您的 ISBN13 是一个字符串,并且在将校验位添加回 SBN 号码时,您不希望影响 9 位号码。我建议:

/* SBNString = 034096139 */
NSString *ISBN10 = [NSString stringWithFormat:@"%@%u", SBNString, checkDigit];

【讨论】:

  • @Rick 非常感谢,太好了:D 但我可以问一下“%@%u”中的 u 是什么意思吗?我知道 d 代表整数,但我似乎找不到 u 代表什么。
  • @XUESNOW %u 和 %s 被称为标记,用于显示不同的数据类型 - %s = 字符串,%d = 整数,%0 = 八进制,%x = 十六进制,%ld = longint, %lld longlongint 等等。为了更好地理解: %u 类似于 int,无符号基数 10
  • @XUESNOW,就像 NSpunk 提到的那样, %u 是无符号整数,但只要您的校验位是正数,您也可以使用 %d 。请注意,如果您的校验位为负数,%d 将显示一个减号 (-),%u 将显示一个非常大的值。
  • @NSPunk,注意 %@ 用于 NSString 而 %s 用于 C-String。对于 iOS 或 cocoa 或 Objective-C,我们大部分时间使用 %@。
  • 感谢大家的帮助! :)
猜你喜欢
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多