C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75152] Re:메모장에 문자열 출력 방법
Observer [bangco] 2995 읽음    2018-10-26 15:38
남스 님이 쓰신 글 :
: uart로 입력받은 hex 데이타를 어느 일부분에 대해서 문자열로 출력하고 싶습니다.
:
: UART 입력 데이터: 0x61 0x61 0x61 0x7E 0x 72 0x 73
: 메모장 출력 목표  : aaa 7E 72 73
:
: HEX표시는 아래 적용시 잘됩니다.
:         strTemp=strTemp+IntToHex(ReqData->StaDebugString[i],2)+" ";
:         MonitorForm->Memo1->SelText=strTemp;
: 하지만 0x61 0x61 0x61 를 메모장에 aaa로  표시하는 방법을 모르겠네요
: 도움 부탁드립니다.


그냥 만들면 될거 같은데요, clang 컴파일러로 테스트 했습니다.
참고로 저는 가능한 빌더 함수 안씁니다. 비쥬얼씨나 우분투에서 동일한 기능이 필요한 경우가 많아서요

//---------------------------------------------------------------------
#include <iostream>

std::string hexStr(unsigned char *data, int len)
{
    constexpr char hexmap[] = {'0', '1', '2', '3', '4', '5', '6', '7',
         '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    std::string s(len * 3, ' ');
    for (int i = 0; i < len; ++i) {
        s[3 * i]     = hexmap[(data[i] & 0xF0) >> 4];
        s[3 * i + 1] = hexmap[data[i] & 0x0F];
    }
    return s;
}
//---------------------------------------------------------------------
std::string charStr(unsigned char *data, int len)
{
    std::string s(len * 2, ' ');
    for (int i = 0; i < len; ++i) {
        char c = char(data[i]);
        if ( c >= '!' && c <= '~')
            s[2*i] = c;
        else s[2*i] = '.';
    }
    return s;
}
//---------------------------------------------------------------------
std::string hexCharStr(unsigned char *data, int len)
{
    return "HEX: " + hexStr(data, len) + "  CHAR: " + charStr(data, len);
}
//---------------------------------------------------------------------
int main()
{
    unsigned char d[] = { 0x61, 0x61, 0x61, 0x7e, 0x72, 0x73 };
    std::cout << hexStr(d, 6) << std::endl;
    std::cout << charStr(d, 6) << std::endl;
    std::cout << hexCharStr(d, 6) << std::endl;
}

///// 출력결과 //////////
61 61 61 7e 72 73
a a a ~ r s
HEX: 61 61 61 7e 72 73   CHAR: a a a ~ r s

+ -

관련 글 리스트
75150 메모장에 문자열 출력 방법 남스 2952 2018/10/25
75152     Re:메모장에 문자열 출력 방법 Observer 2995 2018/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.