发送的字符串后面添加:\r\n 结束标志

否则发送1024或者程序接收默认的字节数

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. /*
  6. * 将字符转换为数值
  7. * */
  8. int c2i(char ch)
  9. {
  10. // 如果是数字,则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2
  11. if(isdigit(ch))
  12. return ch - 48;
  13. // 如果是字母,但不是A~F,a~f则返回
  14. if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )
  15. return -1;
  16. // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10
  17. // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10
  18. if(isalpha(ch))
  19. return isupper(ch) ? ch - 55 : ch - 87;
  20. return -1;
  21. }
  22. /*
  23. * 功能:将十六进制字符串转换为整型(int)数值
  24. * */
  25. int hex2dec(char *hex)
  26. {
  27. int len;
  28. int num = 0;
  29. int temp;
  30. int bits;
  31. int i;
  32. // 此例中 hex = "1de" 长度为3, hex是main函数传递的
  33. len = strlen(hex);
  34. for (i=0, temp=0; i<len; i++, temp=0)
  35. {
  36. // 第一次:i=0, *(hex + i) = *(hex + 0) = '1', 即temp = 1
  37. // 第二次:i=1, *(hex + i) = *(hex + 1) = 'd', 即temp = 13
  38. // 第三次:i=2, *(hex + i) = *(hex + 2) = 'd', 即temp = 14
  39. temp = c2i( *(hex + i) );
  40. // 总共3位,一个16进制位用 4 bit保存
  41. // 第一次:'1'为最高位,所以temp左移 (len - i -1) * 4 = 2 * 4 = 8 位
  42. // 第二次:'d'为次高位,所以temp左移 (len - i -1) * 4 = 1 * 4 = 4 位
  43. // 第三次:'e'为最低位,所以temp左移 (len - i -1) * 4 = 0 * 4 = 0 位
  44. bits = (len - i - 1) * 4;
  45. temp = temp << bits;
  46. // 此处也可以用 num += temp;进行累加
  47. num = num | temp;
  48. }
  49. // 返回结果
  50. return num;
  51. }
  52. int main(int argc, char *argv[])
  53. {
  54. char ch[10] = {0};
  55. strcpy(ch, "1de");
  56. printf("hex:%d\n", hex2dec(ch));
  57. return 0;
  58. }

send发送一次buffer的更多相关文章

  1. [转] - linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错

    linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错 首先是我把套接字设置为异步的了,然后在使用write发送数据时采 ...

  2. (转)electron主线程中通过mainWindow.webContents.send发送事件,渲染线程接收不到

    转自 https://segmentfault.com/q/1010000015599245/ 准备实现的功能: 页面1(渲染进程1)中点击按钮,发送事件给到主进程.主进程成功接收事件后,通过main ...

  3. android DatagramSocket send 发送数据出错

    安卓4.0以后好像不能在主线程里面使用 socket 所以不管是发送数据还是接收数据需要新开一个了线程: 以下代码是我点击发送是代码: new Thread(new Runnable() { @Ove ...

  4. 构建ROP链实现远程栈溢出

    通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这 ...

  5. C#邮件发送问题(二)

    C#邮件发送问题(一) 三.C#下创建基于TcpClient发送邮件组件 在上一节在Dos命令行下测试SMTP服务器连接时,已经使用了SMTP的部分命令,但是当时无法对信息进行编码和解码,也就无法继续 ...

  6. linux网络编程--跳水send和recv

    要了解一个概念:所有的TCP socket在内核具有发送缓冲器和接收缓冲器.TCP除了全双工操作模式TCP滑模取决于这两个单独buffer和这个buffer填充状态. 接收缓冲器数据缓存入内核.应用进 ...

  7. 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像

    远程控制编写之屏幕传输  MFC实现  屏幕截图 发送bmp数据 显示bmp图像: 一 : 首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_x ...

  8. socket编程: TypeError: must be bytes or buffer, not str

    先看一段代码 #!/usr/bin/env python3 from socket import * serverName = "10.10.10.132" serverPort ...

  9. C# WebSocket模拟发送接收

    WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...

随机推荐

  1. XPath 常用语法札记

    * 不包含属性的元素 例如不包含属性的span: span[not(@*)] * 文本包含某部分的元素 例如文本包含Rank的元素: *[contains(text(),'Rank')] * 选择匹配 ...

  2. 属性,类方法@classmethod

    # 属性的初识# class Person:## def __init__(self,name,hight,weight):# self.name = name# self.__hight = hig ...

  3. 2018-2019-2 《网络对抗技术》Exp5 MSF基础应用 Week7-8 20165233

    Exp5 MSF基础应用 目录 一.基础问题 二.攻击实例 主动攻击 ms08_067_netapi(成功) ms10_061_spoolss(失败) 针对浏览器的攻击 ms14_064_ole_co ...

  4. scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class

    转自:https://blog.csdn.net/lzj0470/article/details/17786587 quartz版本号:2.1.7 错误: Caused by: <a href= ...

  5. PHP图像 因其本身有错无法显示

    昨天终于将客户的一个网站迁移至虚拟主机上,满怀希望的敲入网址.唰的一声,网站很轻松的被打开了. 心里那个高兴啊~~~ 咦,怎么产品图片都没有显示出来.一块块都是空白.敲入img src对应的地址,看看 ...

  6. 表格(table)

    Title 主机名 端口 操作 1111 10023 查看详情 修改 表头1 表头1 表头1 表头1 1 1 1 1 1 1 1 1 1 <!DOCTYPE html><html l ...

  7. Redis基本操作-list

    Redis的5种数据结构:string.list.hash.set和zset; Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数 ...

  8. vue 项目部署后 刷新一下 页面找不到 解决

    1.修改配置router的参数  (效果不好) 2. (不能解决 出现403) 后端配置例子 Apache <IfModule mod_rewrite.c> RewriteEngine O ...

  9. SpringBoot application.yml文件不生效

    yml格式对缩进有严格的要求,检查你的yml配置文件是否有不合格的缩进项. 正确的格式如下: server: port: 8881 port前必须有空格,  port后的冒号 后面也需要有空格

  10. 使用ngxtop实时监控nginx

    Ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...