【问题标题】:A code to generate a string dynamically according to specific input根据特定输入动态生成字符串的代码
【发布时间】:2020-02-22 17:16:12
【问题描述】:

我想根据具体输入动态生成字符串舔这个 如果输入 = 1 ,则字符串输出 = 00000 如果它 =10 ,则输出 = 0000a 输入= 16 ,输出= 00010 等等 。 生成的字符串是从 0 到 9 的数字和从 a 到 f 的字母 并且所有生成的字符串的字符串长度都是恒定的。

如果输出不是十六进制的代码是什么,只是一个像aaaaa for 1这样的字符串,

aaaab 2。

【问题讨论】:

  • 这些值之间的逻辑是什么? 10000 可能是负一; 10000a 只是基础改变了; 160000f 再次减一,但基数也发生了变化。还是只是打错了?

标签: java c#


【解决方案1】:

我假设你犯了一个错误,1 的输出应该是00001,而16 的输出应该是00010

使用String.format

public static void main(String[] args) throws Exception {
    System.out.println(toHex(0, 5));
    System.out.println(toHex(1, 5));
    System.out.println(toHex(10, 5));
    System.out.println(toHex(16, 5));
}

private static String toHex(int input, int length) {
    return String.format("%0" + length + "x", input);
}

输出:

00000
00001
0000a
00010

【讨论】:

  • 和 16 一样吗?
  • 小提示:%05x 会用零填充,无需替换......
  • 是的,那是我的错误,如果输出不是十六进制数字怎么办,如果它只是一个字符串怎么办,那是什么代码。而不是你。
  • @BabikerBushra 你的意思是“只是一个字符串”的“十进制表示法”吗?如果是这样,您将不得不写"%0" + length + "d" 而不是"%0" + length + "x"。看看可用的formatting options
【解决方案2】:

我能看到的最符合您规则的 c# 是:

string NumToHex(int num){
  if(num == 10)
    return num.ToString("x5");
  else
    return (num-1).ToString("x5");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多