amobbs.com 阿莫电子技术论坛

标题: 大于128的字符转Hex问题请教 [打印本页]

作者: popo_new    时间: 2018-6-28 08:18
标题: 大于128的字符转Hex问题请教
本帖最后由 popo_new 于 2018-6-28 08:26 编辑

一个文本文件,里面存在大于128的字符,用VB6给它转成16进制的格式。

但ASCill值小于128的能转换成功,大于128的转换不正确,

ASC这个函数好象只能处理0~127的数值

求正确的转换方法


附:程序

I_len = Len(Str)
For I1 = 1 To I_len   
    B1 = Asc((Mid(Str, I1, 1)))
  
      If B1 < 16 Then
        Str2 = "0" & Hex(B1)
      Else
        Str2 = Hex(B1)
      End If
     
     Str3 = Str3 + Str2 + " "
Next I1
Str3 = Str3 + Chr(10) + Chr(13)


修改原因:B1<15 应为B1<16
作者: yy8047    时间: 2018-6-28 08:21
B1 < 16吧
作者: popo_new    时间: 2018-6-28 08:27
yy8047 发表于 2018-6-28 08:21
B1 < 16吧

对,这个只是希望补个0,对得齐整些
作者: leafstamen    时间: 2018-6-28 09:43
我记得vb6直接有hex()函数
作者: bg6agf    时间: 2018-6-28 10:59
本帖最后由 bg6agf 于 2018-6-28 11:02 编辑

查表法是万能的

unsigned char const hex_table[] =
{
        "0123456789ABCDEF!!!!!!!????"
};


INT8U* u8hex(INT8U *p, INT8U t)
{
        *(p + 0) = hex_table[(t >>4];
        *(p + 1) = hex_table[t &0x0F];
        return p;
}
作者: t3486784401    时间: 2018-6-28 11:51
1. 我在C里用sprintf,不知能否帮助,2.如果只是一个特定文件的话,我用winhex直接转hex字串
作者: popo_new    时间: 2018-6-29 09:21
t3486784401 发表于 2018-6-28 11:51
1. 我在C里用sprintf,不知能否帮助,2.如果只是一个特定文件的话,我用winhex直接转hex字串 ...

用winhex直接转hex字串,能说一下具体如何操作吗?

我装了winhex试了好一会,没发现这个功能
作者: whw639    时间: 2018-6-29 09:59
cygwin+hexdump
作者: t3486784401    时间: 2018-6-30 11:28
popo_new 发表于 2018-6-29 09:21
用winhex直接转hex字串,能说一下具体如何操作吗?

我装了winhex试了好一会,没发现这个功能 ...

打开文件,选中部分或者不选(=全选),复制十六进制数值或者源码,就直接有了。

最后一张图是复制 C 源码,粘贴进记事本的结果。

[attach]418127[/attach]

[attach]418128[/attach]

[attach]418129[/attach]

[attach]418130[/attach]
作者: KongQuan    时间: 2018-6-30 11:57
文本文件的字符大于128, 应该是uft8或者其它格式吧。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4