我正在尝试将ASCII字符串转换为HEX。但由于某种原因,它给了我ASCII值而不是HEX值。
所以这是我的代码:
my $file = '/var/tmp/temp_data.txt';
open(my $fh, '<:encoding(UTF-8)', $file)
# Note: Added filename and error code to output.
|| die("Unable to open $file: $!");
my @records; # Terrible variable name!
my @cols = qw[names rate no_of_days total_salary total basic da
hra ot_hallowance gross epf nett];
while (<$fh>) {
chomp;
my %rec;
@rec{@cols} = split /:/;
push @records, \%rec;
}
函数调用如下:public String toHex(String strToConvert) {
ByteBuffer bb = ByteBuffer.wrap(strToConvert.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
while (bb.hasRemaining()) {
sb.append(bb.get());
}
return sb.toString();
}
。我做错了什么?
答案 0 :(得分:2)
尝试使用:
System.out.println(String.format("%02X", char_value))
答案 1 :(得分:1)
您的代码中没有任何内容可以将您从缓冲区获取的字节转换为十六进制;您正在调用的sb.append(int)
方法将其转换为十进制,而不是十六进制。一种解决方案是:
sb.append(String.format("%02X", bb.get()));
请注意,您将方法称为“ASCII到十六进制”,但实际上并没有使用ASCII - 您使用的是UTF-8,它与ASCII不完全相同。