在VC中如何以十六进制的形式显示一个大小不定的字符串?

c3primer 2004-05-05 02:20:55
例如:字符串为:abcd 显示结果为:61 62 63 64
...全文
180 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
QunKangLi 2004-05-12
  • 打赏
  • 举报
回复
不循环,岂有此理!顺序操作难道总耗时会少么?

输出十六进制字符用%x/%X格式化操作符,sprint家族或CString::Format()等都可以用.

格式化花不了多少时间的!想更高效直接查表输出,这是个小测试程序:
#include <iostream>
#include <assert.h>
using namespace std ;
#include <windows.h>

void init_table() ;
void format( char *pszOutput, const char *pszInput ) ;
main()
{
char a[1024] ;
const char * const b = "tes taidc" ;
init_table() ;
format( a, b ) ;
cout<< a << endl ;
return 1;
}
static char g_szTable[256][4] ;
void init_table()
{
for( int i = 0 ; i < 256 ; ++ i )
sprintf( g_szTable[i], "%02X ", i ) ;
}
void format( char *pszOutput, const char *pszInput )
{
assert( pszOutput && pszInput ) ;
while( *pszInput ) {
memcpy( pszOutput, g_szTable[*pszInput++], 4 ) ;//32位机处理4字节是最快速的,故连最后的字串结束符一起复制
pszOutput += 3 ;
}
}


yfxclijun 2004-05-12
  • 打赏
  • 举报
回复
大家来看看
c3primer 2004-05-11
  • 打赏
  • 举报
回复
0a70: 98 9A 8E 7D 3F 23 43 5A 7B 9D;
0a80: 34 2E 8E 7D 3F B4 43 C3 3C B1;
0a90:.....
0b00:.....
做成这种效果,很常见的
大家来帮帮忙
分不够再加。。。
c3primer 2004-05-06
  • 打赏
  • 举报
回复
UP
c3primer 2004-05-05
  • 打赏
  • 举报
回复
第一:处理的数据量很大,而且每次的数据大小不一
第二:循环耗时太大

请大家帮帮忙,一定有很好的格式化方法的
菜牛 2004-05-05
  • 打赏
  • 举报
回复
为什么不能使用循环?
c3primer 2004-05-05
  • 打赏
  • 举报
回复
UP
请教
c3primer 2004-05-05
  • 打赏
  • 举报
回复
更准确地说应该是这样的:将一串数据(长度不定)的每个字节都以十六进制显示
不能使用循环

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧