如何在给定字符串中的特定位置插入十六进制字节

时间:2011-10-04 03:54:41

标签: java android

我想在给定字符串的特定位置插入例如0A和00的十六进制字节,即字符串集=“16 10 36 07 02 00 00 00 00 00 00 00 00 00 00 0B 11 B7 93”;我想在给定字符串的第4和第5位置插入0A和00。我怎样才能在java中编写代码

3 个答案:

答案 0 :(得分:1)

我有一个快速的代码片段,工作正常!

public static String insertAtPos(String input, int pos, String insert) {
    return
    String.format("%s%s%s%s",input.substring(0, 3 * pos), insert, " ", input.substring(3 * pos, input.length()));
}

用法:

public static void main(String[] args) {
    String set= "16 10 36 07 02 00 00 00 00 00 00 00 00 00 00 0B 11 B7 93";
    String s0A = "0A";
    String sFF = "FF";

    System.out.println(insertAtPos(set, 4, s0A));
    System.out.println(insertAtPos(set, 5, sFF));       
}

答案 1 :(得分:0)

您可以这样做:

String set2 = set.substring(0, 9) + "0A 00 " + set.substring(9);

这会给你16 10 36 0A 00 07 02 00 00 00 00 00 00 00 00 00 00 0B 11 B7 93

如果您想要更通用的内容,请解释。

答案 2 :(得分:0)

好吧,你不能改变字符串本身的内容,但你可以改变set变量来引用不同的字符串。 (或者如果需要,可以使用其他变量。)

你想在这里使用十六进制这一事实真的无关紧要。 “第4和第5个位置”仅表示“在字符串中的索引9之后”,因为索引只是字符(字符串的每个“十六进制字节”由两个十六进制数字和一个空格表示;三个字符)。所以:

set = set.substring(0, 9) + "0A 00 " + set.substring(9);