有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

%04X在C中的含义以及如何在java中编写

在我正在从事的java项目中,项目的某些部分以前是由其他人用C编写的,现在我需要用java编写同样的内容

C代码中有一条语句用于打印到文件:

fprintf(ff, "%04X ", image[y*width+x]);

首先,我不确定%04X的含义。我认为这意味着如果image[i]的长度为5或更多,那么只打印最左边的4个字符。为了在Java中实现同样的功能,我考虑使用and操作屏蔽该值

 image[i] & 0xFFFF

有人能告诉我%04X的正确含义以及在Java中如何做到这一点吗?谢谢


共 (3) 个答案

  1. # 1 楼答案

    举例说明

    printf ("%d", 75);   // Output ->   '75' (Decimal Number)
    printf ("%X", 75);   // Output ->   '4B' (X for large hexadecimal letters)
    printf ("%4X", 75);  // Output -> '  4B' (Left justified with 4 spaces)
    printf ("%04X", 75); // Output -> '004B' (Left justified with 0 until 4 digits)
    
  2. # 2 楼答案

    让我们将格式代码"%04X"分解为单独的部分:

    • X意味着它将以十六进制打印一个整数,大X表示大十六进制字母
    • 4表示数字将以至少四位数字左对齐打印,如果少于四位,则打印空格
    • 0意味着如果少于四位,它将打印前导零
  3. # 3 楼答案

    该值的格式为十六进制整数,包含四位数字和前导零。Java使用相同的格式字符串语法。你可以在javaDoc of ^{}中找到它

    节选:

    'x', 'X'     integral    The result is formatted as a hexadecimal integer
    

    A相关功能包括

    // create a String with the formatted value.
    String formatted = String.format("%04X ", image[y*width+x]);
    
    // write a formatted value to the console (*)
    System.out.printf("%04X ", image[y*width+x]);
    

    (*)-将其写入PrintStream{},这通常是控制台,但可以重定向到文件或其他内容