腾讯笔试16进制字符串


传了几次代码,格式有错误,也不知道对不对,反正最后没有提交上,已GG。
-----更新
感谢 TomI同学提醒更改了代码

public class Main { public static void main(String[] args) {
        Scanner in = new Scanner(System.in);  String str = in.nextLine();  char[] arr = str.toCharArray();  int len = arr.length;  for (int i = 0; i < len; i++) { if ((i + 1) % 16 == 1) {
                System.out.printf("%08x",i);//十六进制偏移  }
            String ch = Integer.toHexString(arr[i]);//十六进制字符  System.out.print("  " + ch);  if (i != 0 && (i + 1) % 16 == 0) {
                System.out.println("  " + str.substring(i - 15, i + 1));//原文  }
        }
    }
}
#腾讯#
全部评论
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String a; a = in.nextLine(); for(int i=0, j=0;i<a.length();i++,j++) { if((i+1)%16==1) { String b = Integer.toHexString(i); //int k = b.length(); for(int k =0;k<8-b.length();k++) { System.out.print("0"); } System.out.print(b+" "); } System.out.print(Integer.toHexString(a.charAt(i))+" "); if(j==7){ System.out.print(" "); j = -1; } if(i%16==15) { System.out.print(a.substring(i - 15, i + 1)); if (a.length() - i >= 16) System.out.print("\n"); } } } } 考试的时候没做出来,现在回过头重新做了下,不知道对不对
点赞 回复
分享
发布于 2017-04-03 21:50
public class Main { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(scanner.hasNext()){ String str=scanner.next(); int seg=str.length()/16; StringBuilder sb=new StringBuilder(""); for(int i=0;i<seg;i++){ String st=Integer.toHexString(i*16); for(int m=0;m<8-st.length();m++) sb.append("0"); sb.append(st+" "); String s=str.substring(i*16,i*16+16); char[] ch=s.toCharArray(); for(char c:ch){ sb.append(Integer.toHexString(c)); sb.append(" "); } sb.append(" "+s+"\n"); } System.out.println(sb.toString()); } } }
点赞 回复
分享
发布于 2017-04-03 21:10
滴滴
校招火热招聘中
官网直投
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String in = sc.next(); // System.out.println(in); StringBuffer sbin = new StringBuffer(in);//输入 char[] arr = in.toCharArray(); String HexMoving = "";//16进制偏移 StringBuffer sb = new StringBuffer("");//拼接每一行字符串 for(int i=0; i<arr.length/16; i++){ HexMoving = Integer.toHexString(i*16); //如果少于8位 前面补零 if(HexMoving.length() < 8) { for (int j = 0; j < 8 - HexMoving.length(); j++) { sb.append("0"); } } sb.append(HexMoving); sb.append(" "); //每16字节 转16进制 用空格做间隔 for (int j = i*16; j<(i+1)*16; j++){ sb.append(Integer.toHexString(sbin.charAt(j))); sb.append(" "); } sb.append(" "); //加入原字符串 sb.append(sbin.substring(i*16, (i+1)*16)); System.out.println(sb.toString());//输出并换行 HexMoving ="";//重置位移变量 sb.delete(0,sb.length());//清空 } } //abcdefghabcdefghabcdefghabcdefgh }
点赞 回复
分享
发布于 2017-04-04 13:55
public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); char[] arr = str.toCharArray(); int len = arr.length; for (int i = 0; i < len; i++) { if ((i + 1) % 16 == 1) { String index = Integer.toHexString(i);//十六进制偏移 String res = String.format("%0" + 8 + "d", Integer.parseInt(index)); System.out.print(res); } String ch = Integer.toHexString(arr[i]);//十六进制字符 System.out.print(" " + ch); if (i != 0 && (i + 1) % 16 == 0) { System.out.println(" " + str.substring(i - 15, i + 1));//原文 } } } }
点赞 回复
分享
发布于 2017-04-03 21:10
package xiaozhao2017; import java.util.Scanner; public class StringToHex { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String s=scan.next(); int n=s.length(); int line=0; int charAt=0; while(n>0){ n-=16; System.out.print(HexOff(line*16)+" "); line++; for(int i=0;i<8;i++){ System.out.print(convertLetterToHexNum(s.charAt(charAt))+" "); charAt++; } System.out.print(" "); for(int i=0;i<8;i++){ System.out.print(convertLetterToHexNum(s.charAt(charAt))+" "); charAt++; } System.out.print(" "); String temp=s.substring(charAt-16, charAt); System.out.println(temp); } } public static String HexOff(int n){ String s=Integer.toHexString(n); String str=""; if(s.length()<8){ for(int i=0;i<8-s.length();i++){ str+="0"; } str+=s; return str; } else{ return s; } } public static String convertLetterToHexNum(char c){ return Integer.toHexString((int)(c)); } }
点赞 回复
分享
发布于 2017-04-03 21:13
import java.util.Scanner; public class Main { public static void main(String...args) { Scanner sc = new Scanner(System.in); String s = sc.next(); for (int i = 0; i < s.length() / 16; i++) { System.out.print(String.format("%08X", i * 16)); System.out.print(" "); for (int j = 0; j < 2; j++) { for (int k = 0; k < 8; k++) { int n = s.charAt(i * 16 + j * 8 + k); String ss = Integer.toHexString(n); System.out.print(ss.toLowerCase()); System.out.print(" "); } System.out.print(" "); } for (int j = 0; j < 16; j++) { System.out.print(s.charAt(i * 16 + j)); } System.out.println(); } } }
点赞 回复
分享
发布于 2017-04-03 21:26
这题就体现出c++的优势了 /滑稽
点赞 回复
分享
发布于 2017-04-03 21:51
#include #include #include using namespace std; int main() { string str; cin>>str; if(str.size()%16!=0) return -1; //16进制转义 char *temp=new char [3*str.size()]; for(int i=0;i<str.size();i++) sprintf(temp+3*i,"%x ",(int)str[i]); string res=temp; //输出 unsigned int bais=0x0000000; for(int i=0;i<str.size()/16;i++) { printf("%08x ",bais); cout<<res.substr(i*48,24)<<" "; cout<<res.substr(i*48+24,24)<<" "; cout<<str.substr(i*16,16)<<endl; bais+=0x000000010; } return 0; } 开始用cout没累死我
点赞 回复
分享
发布于 2017-04-03 22:10
import java.util.Scanner; public class Test1 { public static void main(String[] args){ Scanner sc =new Scanner(System.in); String input = sc.next(); char[] arr = input.toCharArray(); int len =arr.length; int n = (len % 16 == 0)?(len/16):(len/16+1); char[][] smallChar = new char[n][16]; //构建二维数组 for(int i=0;i<len;i++){ smallChar[i/16][i%16] =arr[i]; } for(int i=0;i<smallChar.length;i++){ StringBuffer sb =new StringBuffer(); //16进制偏置 sb.append(String.format("%08x", i*16)); sb.append(" "); //16进制打印 for(int j=0;j<smallChar[i].length;j++){ sb.append(Integer.toHexString((int)smallChar[i][j])+" "); } //字符打印 for(int j=0;j<smallChar[i].length;j++){ sb.append(smallChar[i][j]); } System.out.println(sb.toString()); } sc.close(); } }
点赞 回复
分享
发布于 2017-04-03 23:33
这个题什么意思...我怎么没读懂
点赞 回复
分享
发布于 2017-04-04 00:35
转16进制的函数我自己写的,而且格式化输出也是自己补齐的。丧心。但是最后结果正确😄
点赞 回复
分享
发布于 2017-04-04 10:17
printf("%.8x", a) 好像是这样
点赞 回复
分享
发布于 2017-04-04 12:15

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务