2009-08-13 6 views
11

Мне нужно распечатать некоторые данные (немного странно отформатированные). Я писал его на PHP с if ($ num% 10 == 9), но для меня было невозможно получить правильный результат.Как печатать шестнадцатеричные числа в PHP или Java

Так что взгляните на это, например. У нас есть x файлов в папке. Для этого примера x = 36. X всегда известен.

Вывод должен выглядеть следующим образом:

01 
02 
03 
04 
05 
06 
07 
08 
09 
0a 
0b 
0c 
0d 
0e 
0f 
10 
11 
... 
19 
1a 
... 
1f 
20 
... 
24 

Извините за такой длинный «список», но я считаю, что вы знаете, что мне сейчас нужно. Итак, после каждого числа, которое заканчивается на 9, мы имеем num (a, b, c, d, e, f), а затем число, которое следует за предыдущим числом с 9 на конце. (Пример 3а ... 3f, 40..49). И самое главное, что количество печатных строк должно быть равно x.

Если возможно, я бы предпочел PHP или Java-код, но я буду очень благодарен за любую помощь.

+0

Не могли бы вы просто указать шестнадцатеричные числа? –

ответ

9

Вам нужно напечатать цифры от 1 до 30 в шестнадцатеричной системе. Попробуйте этот метод для каждой строки:

dechex (int $number) 
+2

так просто ... 'while ($ number ++ <$ X) {echo dechex ($ number)." \ N "; } ' –

+0

Ах, глупый я, я вообще не думал о гексане ... Мой мозг не работает в эти жаркие дни, но очевидно, что иногда я являюсь настоящим nOOb: D – Splendid

4

Это будет печатать шестнадцатиричное 01-24 (с 0 отступы перед числами меньше, чем 10)

for ($i = 1; $i <= 36; $i++) { 
    printf("%02x\n", $i); 
} 
1
<?php 
function blah($n) { 
    for($i=1;$i<=$n;$i++) { 
    printf("%02x\n", $i); 
    } 
} 

blah(36); 
?> 

01 
02 
03 
04 
05 
06 
07 
08 
09 
0a 
0b 
0c 
0d 
0e 
0f 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
1a 
1b 
1c 
1d 
1e 
1f 
20 
21 
22 
23 
24 
7
for (int i=1 ; i <= x; i++) { 
     System.out.printf("%02x\n", i); 
    } 
+0

Что это? Java не имеет printf. – jimyi

+4

Что касается Java 5.0, то делает это. http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Tech/Chapter05/formatterPrintf.html –

+0

Интересно, должно быть, пропустил это, взглянув на документы. – jimyi

29

Для Java:

System.out.println(Integer.toHexString(number)); 

или

System.out.println(String.format("%x", number)); 

У последнего есть больше вариантов форматирования шестнадцатеричной строки.

+2

Еще немного короче: 'System.out.format («% x \ n », number);' –