十六进制

题目(11)

泪湿孤枕 提交于 2020-01-22 00:23:15
【进制转换7】十六进制和二进制 难度级别: A; 编程语言:不限;运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B 试题描述 十六进制数,是我们在计算机领域广泛应用的数制。它的每一位数制由16种字符表示,即0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。能够依次表示10进制的0至15。 十六进制最大的好处就是能够快速的转化为2进制数值。因为每一位16进制数制可以转化为4位2进制数制。 如,下表: 十六进制 二进制 十六进制 二进制 十六进制 二进制 十六进制 二进制 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 给你一个多位16进制数制,请你帮我转化为对应的二进制数制。为了简化,如果转化后的二进制数制前面有零也不要省略。 输入 输入中为一个字符串,即为一个16进制数。 输出 输出这个16进制数对应的2进制数。 输入示例 13A3 输出示例 0001001110100011 其他说明 【实战基础衔接(三)】 语言:C\C++ 来源: CSDN 作者: 杰克、第五,盛宴伯爵 链接: https://blog.csdn.net/cool99781/article

Unicode字符集和编码方式

余生颓废 提交于 2020-01-20 14:31:06
通常将一个标准中能够表示的所有字符的集合称为字符集,比如ISO/Unicode所定义的字符集为Unicode。在Unicode中,每个字符占据一个码位/Unicode 编号(用4位十六进制数表示,Code point:U+ FFFF),如U+ 0000为“Null”,U+ 597D="好"。Unicode字符集共定义了1 114 112个这样的位,使用从0到10FFFF的十六进制数唯一地表示世界上几乎所有的字符。 NCR(Numeric Character Reference),以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。数字取值为目标字符的 Unicode code point。 U+002C === , 虽然字符集中的码位唯一,但由于计算机存储数据通常是以字节为单位的,而且出于兼容之前的 ASCII(0x00-0x7F) 、节省存储空间等诸多原因,需要一种具体的编码方式来对字符码位进行标识。规定每个字符的Unicode编号如何存储(用一个字节还是多个字节存储,用哪些字节来存储),这个规定就叫做“编码”。常见的基于Unicode字符集的编码方式有UTF-8、UTF-16及UTF-32。 字符集中的字符与Unicode 编号一一映射,对Unicode编号进行编码转为二进制存入内存。同一段二进制,每一个字节一个编号还是每两个字节一个编号,解码方式不一样

字符转十六进制数据(串口,网口发送)以及ASCII码对照表

白昼怎懂夜的黑 提交于 2020-01-18 02:24:11
最近项目中遇到了字符串转十六进制数据,看了不少别人的代码,也查阅了ASCII对照表。附上ASCII码表如下: 其中用到的代码如下: 如果是CString类转成十六进制可以这样: void CStringtoHex ( CString str , BYTE * SendBuf , int * SendLen ) { //CString 转 BYTE型 int i = 0 ; BYTE GetData [ 256 ] = { 0 } ; int GetLen = 0 ; GetLen = str . GetLength ( ) ; for ( i = 0 ; i < GetLen ; i ++ ) { GetData [ i ] = ( BYTE ) str . GetBuffer ( ) [ i ] ; } //BYTE转16进制数据 int a = 0 ; char temp ; //接收字符,用来判断是否为空格,若是则跳过 char temp1 , temp2 ; //接收一个字节的两个字符 例如EB,则temp1='E',temp2 = 'B' for ( i = 0 ; i < GetLen ; i ++ ) { temp = GetData [ i ] ; if ( temp == ' ' ) continue ; if ( a == 0 ) temp1 = GetData

PE之RVA转FOA

我与影子孤独终老i 提交于 2020-01-18 00:05:23
公式 RVA = 内存地址-ImageBase 判断RVA在哪一个节上: RVA>=节n.VirtualAddress RVA<=节n+1.VirtualAddress 偏移=RVA-节n.VirtualAddress FOV=节n.PointerToRawData+偏移 实验-对齐大小一样 #include <stdio.h> char str[] = "ABC"; int main() { printf("Address: %p\n", &str); printf("V: %s\n", str); return 0; } 执行后输出: Address: 00424D8C V: ABC 获取ImageBase ImageBase 在扩展PE头上的第十个属性,基于扩展PE头偏移地址28个字节,大小为DWORD。 00004000,小端存储转十六进制为0x00400000,所以ImageBase的地址为0x00400000。 计算RVA RVA=内存地址-ImageBase=0x00024D8C 获取内存对齐和文件对齐 SectionAlignment 内存对齐 在扩展PE头上的第十一个属性,大小为DWORD。 FileAlignment 文件对齐 在扩展PE头上的第十二个属性,大小为DWORD。 发现内存对齐和文件对齐都是1000h,实验完再找一个对齐不一样的试试。 判断在哪一个节

.Net十进制转化为十六进制

牧云@^-^@ 提交于 2020-01-17 00:39:48
来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=306 GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 十进制转十六进制 怎么转? 我想把十进制的数转成十六进制。因为C#没有这样的类,要自己手写,很麻烦 ,有没有简单点的方法。十进制数可能很长 用ToString()方法就行 int i = 13; string s = i.ToString("X2"); ToString()的参数 X表示十六进制字符串,数字2表示显示位数 结果为:0D string s = i.ToString("X1"); 结果为:D 来源: 51CTO 作者: 森大科技 链接: https://blog.51cto.com/14036626/2467343

.Net十进制转化为十六进制

删除回忆录丶 提交于 2020-01-16 20:56:35
来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=306 GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 十进制转十六进制 怎么转? 我想把十进制的数转成十六进制。因为C#没有这样的类,要自己手写,很麻烦 ,有没有简单点的方法。十进制数可能很长 用ToString()方法就行 int i = 13; string s = i.ToString(“X2”); ToString()的参数 X表示十六进制字符串,数字2表示显示位数 结果为:0D string s = i.ToString(“X1”); 结果为:D 来源: CSDN 作者: 森大科技 链接: https://blog.csdn.net/cnsend/article/details/104008863

20190313: 进制转换(未完待续)

狂风中的少年 提交于 2020-01-16 16:08:03
1、十进制转二进制、八进制、十六进制 十进制转二进制:将十进制数除以2,余数即为二进制数的低位,所得商继续除以2直到商为0为止,每一次的余数即为二进制数的低位到高位的数字。以十进制数150为例:150/2=75余0,75/2=37余1,37/2=18余1,18/2=9余0,9/2=4余1,4/2=2余0,2/2=1余0,1/2=0余1,因此十进制数150的二进制数为10010110。 十进制转八进制:将十进制数除以8,余数即为八进制数的低位,所得商继续除以8直到商为0为止,每一次的余数即为八进制数的低位到高位的数字。以十进制数150为例:150/8=18余6,18/8=2余4,2/8=1余2,因此十进制数150的八进制数为226。 十进制转十六进制:将十进制数除以16,余数即为十六进制数的低位,所得商继续除以16直到商为0为止,每一次的余数即为十进制数的低位到高位的数字,余数10-15分别字母A-F表示。以十进制数150为例:150/16=9余6,9/16=0余9,因此十进制数150的十六进制数为96。 2、二进制转十进制、八进制、十六进制 二进制转十进制:将二进制数的各位数与2的幂相乘求和。以二进制数10010110为例,? 二进制转八进制:将二进制数从低位到高位即从右到左每3位看做一个整体,计算其十进制数,所得即为八进制数。以二进制数10010110为例

04-请用移位的方式打印出一个十进制整数的十六进制形式(JDK源码)

点点圈 提交于 2020-01-15 21:09:53
01-需求: 请用移位的方式打印出一个十进制整数的十六进制形式。 提示: 按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位, 然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: 1)0-9之间的数值直接加上字符’0’,9以上的数值减去10以后再加上字符’A’ 2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。 3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符’F’。 02-思路 1. 掩码mask的计算。shift参数用于区分不同进制,比如二进制的shift = 1 ,mask = 1 ;八进制的shift = 3 ,mask = 7 ;十六进制的shift = 4 ,mask = 15 。 2. 右移使用的是 >>> 而不是 >> 。位运算中的右移分为算术右移( >> )和逻辑右移( >>> )。在进行算术右移时,最高位补符号位;而在进行逻辑右移时,最高位补 0 。如果这里使用的算术右移,那么对于像 - 1 这样的负数,不论进行多少次右移操作都不可能变成 0 ,所以会造成死循环。 3. 使用的是 do - while 而不是 while 。这是一个极其重要的细节,如果使用的是

XCTF Hello CTF

送分小仙女□ 提交于 2020-01-15 18:43:59
一.查壳 二.拖入ida x86静态分析 shift +F12找到字符串。 发现关键字please input your serial 点击进入 这是我们的主函数,F5反编译一下,看一下逻辑。 这里有几个函数,我也不懂啥意思,百度的. 1.qmemcpy(void *destin ,void *source):将source指针所指的值拷贝到destin中去 2.sprintf(char *str, char * format [, argument, …]),在本文的意思是将v4的字符串以十六进制的形式存入v8中。 三. 那么逻辑已经很明显了,V13就是我们的flag,只不过转成了十六进制,只需要将十六进制转成字符串就好了。 来源: CSDN 作者: YenKoc 链接: https://blog.csdn.net/YenKoc/article/details/103989710

ios十进制、十六进制字符串,byte,data等之间的转换

可紊 提交于 2020-01-15 07:06:43
十进制->十六进制 Byte bytes[]={ 0xA6, 0x27, 0x0A}; NSString *strIdL = [ NSString stringWithFormat : @"%@" ,[[ NSString alloc ]initWithFormat : @"%02lx" ,( long )bytes[ 0 ]]]; 十 六进制->十进制 NSString *rechargeInfo = @ "0xff055008" ; NSString *cardId2 = [ rechargeInfo substringWithRange :NSMakeRange ( 2 , 2 )]; cardId2 = [ NSString stringWithFormat : @"%ld" ,strtoul ([cardId2UTF8String ], 0 , 16 )]; NSString *str = @ "0xff055008" ; //先以16为参数告诉strtoul字符串参数表示16进制数字,然后使用0x%X转为数字类型 unsigned long red = strtoul([str UTF8String], 0 , 16 ); //strtoul如果传入的字符开头是“0x”,那么第三个参数是0,也是会转为十六进制的,这样写也可以: unsigned long red =