2017-03-20 6 views
-2

많은 16 진수 값이 포함 된 텍스트 파일을 생성해야합니다. 16 진수 값은 차이가 0x1000000 인 산술 진행입니다.루프의 16 진수 값 추가

sum(0x08000000, "text") 
sum(0x09000000, "some other text") 
sum(0x0A000000, "yet another text") 
... 
sum(0x10000000, "random something") 
... 

내가 이러한 값을 생성하는 루프를 실행할 수있는 방법이 있나요 :

은 파일의 출력으로해야 하는가?

감사합니다.

+5

예있다. 너 뭐 해봤 니? – klutt

+0

for (my $ i = 0x8000000; $ i <= 0x10000000; $ i + = 0x1000000) "sum", 16 진수 $ i, "\ n"; 나는 hex 키워드 사용 여부에 관계없이 이것을 시도했다. 모든 값을 10 진법으로 인쇄합니다. – aayu5h

+0

또한 루프 내부에서 시도되었습니다. print sprintf "% X", $ i, "\ n"; 이것은 필요한 값을 제공하지만 "sprintf의 중복 인수"를 던졌습니다. – aayu5h

답변

1

헥스 출력에 printf 또는 sprintf이 필요합니다.

Perl은 정확히 16 진수를 이해합니다. 앞에 0x을 붙이면 16 진수입니다.

그러나 출력 형식을 지정하는 경우 '일반'숫자 표현이 기본 설정이므로 printf 또는 sprintf이 필요합니다 (같은 일을하지만 후자는 '문자열'로 인쇄).

#!/usr/bin/env perl 

use strict; 
use warnings; 

print 0x10,"\n"; 

my $value = 0x20; 
$value += 0x1F; 

print $value,"\n"; 

printf ("%X\n", $value); 

형식 문자열 대문자 헥스위한 %X 또는 %x 소문자를 사용하는 중입니다. 그래서 예를 들어

:

for (my $i = 0x8000000; $i <= 0x10000000; $i += 0x1000000) { 
    printf("sum 0x%x\n", $i); 
}