[C++] char data[20] = "\t\01"; 의 앞2바이트를 (sho

gyxor의 이미지

#include<iostream>
using namespace std;

int main(){
    
    char data[20] = "\t\01";
	char temp1[20] ={ 0};
	char temp2[20] ={ 0};
    short len=0;
	
	memcpy(&len ,&data[0] , sizeof(len) ) ;
		
	cout << len;

	return 0;
}

위 내용에서 결과는 tab의 아스키 코드값에 해당하는 9가 출력이 되어야 할거 같은데요.. 256이 출력됩니다.
대신 아래처럼
char data[20] = "\t\0a";
데이터에서 텝과 널 다음에 숫자가 아닌 문자가 올때만 정상적으로 읽히게 됩니다. 이때에는 의도대로 9가 찍힙니다.
이런현상이 왜 일어 나는지 궁금합니다
또 이것을 숫자일때에도 가능하게 하는 방법은 없는지 알려주시면 감사하겠습니다.
답변부탁드립니다.
dolsemix의 이미지

256이 아니라 265가 출력되겠죠 ^^;
인텔계열이라면 little endian이니까... 9+256=265

참고로... C 문법에서 Escape Character 표현방법에는 백슬래쉬 다음에 특수문자에 해당하는 문자 t, r, n 등을 써주는 방법과 숫자를 직접 써주는 방법이 있습니다.
숫자를 직접 쓸 경우 0으로 시작하는 숫자는 8진수, 1~9로 시작하는 숫자는 10진수입니다.
예를 들어, \01은 8진수 01로 컴파일하고, \0a는 \0 + 'a'로 컴파일합니다.
님의 의도대로라면 \t\0\xxx (xxx = '1')라고 써야 할 듯...

담배 고만 펴야겠다...

bugiii의 이미지

gyxor님. 일련의 쓰레드를 여시고 질문하시는 것을 볼 때, 지금 하시고자 하는 일이 어떤 외부의 텍스트로 된 데이터를 입력받아서 처리하고자 하시는 것인지요?

gyxor의 이미지

\01 이게 8진수라는걸 몰랐습니다.
그래서 265가 나왔군요..(256잘못썼습니다. 죄송)

실제 파일에서는 위와 같은 문제가 발생하지 않았습니다.
그것을 이상하게 여겼는데..

\01 이
null 과 1 로 16bit가 들어간것이 아니라

하위 -----------상위
100

이렇게 3bit만 들어간것이었군요..

난감했던 문제가 해결 됐습니다.
정말 감사합니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.