目前我有代码转换一个包含二进制字符的char指针并将它们转换为十六进制和八进制表示。
我的代码进展的方式,我现在有一个整数二进制数,它不再是一个char指针,但我仍然希望将它转换为十六进制和八进制。
所以,我已将代码转换为十六进制或八进制等效的“1101”,但我当前将1101作为整数值,但仍希望将其转换为十六进制或八进制。
我不知道如何重写代码以接受整数二进制作为参数而不是char *二进制。或者如何将我所拥有的int更改为char指针,以便它可以成功通过转换函数。
这是函数调用的代码,当前使用char指针指向数字的二进制表示,将其转换为八进制或十六进制表示:
private volatile Deserializer<byte[]> packetDeserializer = new ByteArrayLfSerializer();
private volatile Serializer<byte[]> packetSerializer = new ByteArrayLfSerializer();
@Override
public Map<?, ?> deserialize(InputStream inputStream) throws IOException {
byte[] bytes = readToEndOfMessage(inputStream);
String asString = new String(bytes, "UTF-8");
Map<String, String> headers = new HashMap<String, String>();
headers.put("issuer", asString.substring(0, 5));
headers.put("client", asString.substring(4, 9));
headers.put("product", asString.substring(9, 11));
headers.put("type", asString.substring(11, 14));
Map<String, Object> map = new HashMap<String, Object>();
map.put("headers", headers);
map.put("payload", createPayloadFromRemainingBytes(bytes));
return map;
}
@Override
public void serialize(Map<?, ?> object, OutputStream outputStream) throws IOException {
Map<String, String> headers = (Map<String, String>) object.get("headers");
outputStream.write(headers.get("issuer").getBytes("UTF-8"));
outputStream.write(headers.get("client").getBytes("UTF-8"));
outputStream.write(headers.get("product").getBytes("UTF-8"));
outputStream.write(headers.get("type").getBytes("UTF-8"));
outputStream.write(convertPayloadToBytes(object.get("payload")));
}
这是使用char * bin参数的转换函数:
MapMessageConverter
以下是转换函数中调用的函数:
output = binaryBaseChange(output, 3); //for binary to octal conversion
output = binaryBaseChange(output, 4); //for binary to hex conversion