算法-将一个字符转换成16进制表示的字符串的快速转换算法

发布于 2017-01-08 04:25:51 字数 0 浏览 1209 评论 4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-09-23 05:32:13

AS3版本:
函数是转换单个字符,如果是多个字符,需要确定生成的16进制长度,修改转换逻辑。

 function asciiToHexNum(char:String):String {
return char.charCodeAt(0).toString(16).toUpperCase();
}
asciiToHexNum("9");//39
asciiToHexNum("胡");//80E1

归属感 2017-08-30 08:32:05

做一个静态数组是否会更好
static char* hexChar[255] = {"00", "01",.....,"0F",

"10", "11, ......"1F",
...
"F1", "F2", ..... "FF"}

偏爱自由 2017-06-03 07:44:31

 <?php
function StrToHex($string)
{
$hex= "";
for($i=0;$i <strlen($string);$i++)
$hex.=dechex(ord($string[$i]));

$hex=strtoupper($hex);
return $hex;
}
function HexToStr($hex)
{
$string= "";
for($i=0;$i <strlen($hex)-1;$i+=2)
$string.=chr(hexdec($hex[$i].$hex[$i+1]));

return $string;
}

$a = StrToHex("你好 abc");
var_dump($a);

$b = HexToStr($a);
var_dump($b);
?>

晚风撩人 2017-04-18 00:46:52

老唐,来晚了。上一个封装好的汇编版本的,转换速度应该快,刚写完且调试成功。
只处理了0-9,a-f,A-F,若要处理其它字符,在其中添加判断分支。

#include "stdafx.h"

BYTE AsciiToHexNum(char szChar) //返回0为不正确的输入字符
{
BYTE nHex=0;

_asm
{
mov al,szChar
cmp al,'0'

jb Invalid //小于'0'的字符不处理
mov ah,al //假设在'0'-'9'之间
sub ah,'0' //计算差距
cmp al,'9'
jbe transNum //确定在'0'-'9'之间
cmp al,'A'
jb Invalid //小于'A'不处理
mov ah,al //假设在'A'-'F'之间
sub ah,'A'-10
cmp al,'F'
jbe transUpper //确定在'A'-'F'之间
cmp al,'a'
jb Invalid //小于'a'不处理
mov ah,al //设在'a'-'f'之间
sub ah,'a'-10
cmp al,'f'
jbe transLow //确定在'a'-'f'之间

Invalid:
mov ah,0
jmp over
transNum:
add ah,0x30
jmp over
transUpper:
add ah,0x37
jmp over
transLow:
add ah,0x57
over:
mov nHex,ah
}
return nHex;
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.

//char szChar='B';
char szChar='9';
BYTE bHex=AsciiToHexNum(szChar);
return 0;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文