二进制数据到整数?

时间:2017-09-28 09:28:30

标签: c raw-data

我需要制作一个将UTF-8文件转换为十进制的脚本。在这个过程中,我将在代码中引入一个文件并针对转换机制运行它。我有一个纯粹的UTF-8文件(如果我错了,请纠正我),我将在下面附上。我的主要目的是从UTF-8转换生成短类型整数数据。

00000000: f712 db12 141a ac1c 2018 ee2e 3b20 7a19  ........ ...; z.
00000010: 8f15 2813 c911 ca10 4710 cd0e 980e 3d11  ..(.....G.....=.
00000020: 6a17 3a21 3b30 ab49 e269 ff7f ff7f ff7f  j.:!;0.I.i......
00000030: ff7f ff7f ff7f 3067 7b19 67c8 2092 998f  ......0g{.g. ...
00000040: 65af edbd 00ad d191 0080 0080 9382 2b91  e.............+.
00000050: 85af 6fba 10b4 1a9f c287 0080 3286 7fa2  ..o.........2...
00000060: 8fd0 5bf9 db15 0228 6433 b33c 3e42 c742  ..[....(d3.<>B.B
00000070: 9f3f 213d d33a bb38 b534 a930 072c 9e26  .?!=.:.8.4.0.,.&
00000080: 8f1e ab14 2609 2aff 44f9 63f7 56f8 65fb  ....&.*.D.c.V.e.
00000090: 9d00 bf0a 1b0f 8f13 7917 551b 351f 4f22  ........y.U.5.O"
000000a0: c524 6f25 bc24 5523 d322 5123 de23 f523  .$o%.$U#."Q#.#.#
000000b0: 1224 d023 2924 2a24 e523 6e23 bb22 3422  .$.#)$*$.#n#."4"
000000c0: 5021 0a21 bd1f b01d 751c 021b eb19 e118  P!.!....u.......
000000d0: ac18 7b18 9118 ec18 fc18 a818 f018 7f18  ..{.............
000000e0: 6a18 2918 8417 5c17 fe16 dc15 cd14 5e14  j.)...\.......^.
000000f0: 0514 c513 5213 5513 b613 ec13 4714 9514  ....R.U.....G...
00000100: ee14 a214 8314 4614 9c13 d512 6512 9611  ......F.....e...
00000110: 6110 d20f 7d0f 800f d10f c20f 1710 8f10  a...}...........
00000120: 3b11 da11 8012 9013 1414 7914 8d14 9514  ;.........y.....
00000130: e613 4a13 de12 4d12 9411 7b11 2a11 9310  ..J...M...{.*...
00000140: 2011 6611 9c11 2112 d012 0713 7e13 c313   .f...!.....~...
00000150: 6214 6414 4f14 ad13 d713 4c13 9e12 db11  b.d.O.....L.....
00000160: f910 f810 0411 1411 0511 fb10 7411 8611  ............t...
00000170: d011 7012 3f12 e712 0413 1913 5613 5f13  ..p.?.......V._.
00000180: fb12 b912 a412 8212 6612 4512 8911 6911  ........f.E...i.
00000190: a611 1212 0212 3012 a012 d912 8813 9f13  ......0.........
000001a0: fb13 8514 1214 3a14 7a14 4314 8a14 3314  ......:.z.C...3.
000001b0: e813 b313 fb12 a212 ca12 3912 9412 6612  ..........9...f.
000001c0: c212 7712 3712 2812 4512 cd12 cd12 e312  ..w.7.(.E.......
000001d0: cf12 fc12 3f13 d512 cc12 9012 4912 4012  ....?.......I.@.
000001e0: 4412 4d12 cc11 a611 cd11 f211 dc11 2a12  D.M...........*.
000001f0: 7112 9812 cd12 4713 8313 a513 7c13 a413  q.....G.....|...
00000200: cf13 db13 e213 2b14 1214 1014 bf13 6413  ......+.......d.

hexl-mode中的文件

我遇到的问题是我不确定UTF-8文件类型是什么。我用Google搜索但仍然没有运气。如果没有足够的信息,我将无法为该过程制定算法。哦,请分享您对算法启动和运行所需的代码的想法。我需要尽快启动此脚本并运行读取文件。您将非常感谢您对此问题的贡献。

仅供参考:通过获得短整数,我将能够绘制从检测器接收的信号的图形。初始文件格式为.ht3,我将样本提取为.txt文件格式。 C语言也会很棒(因为我现在就是这样)

更新1 : 我错了utf-8。它是二进制数据。下面是它的原始样本数据。 (我刚收到这些数据)

> ˜€¨ Ó.; zè(… GÕò=j:!;0´I‚iˇˇˇˇˇˇ0g{g»
> íôèeØÌΩ≠—ëÄÄìÇ+ëÖØo∫¥ü¬áÄ2Ü¢è–[˘€(d3≥<>B«Bü?!=”:ª8µ4©0,û&è´&  *ˇD˘c˜V¯e˚ùø
> èyU5O"≈$o%º$U#”"Q#fi#ı#$–#)$*$Â#n#ª"4"P!
> !Ω∞uη¨{ëϸ®j)Ñ\˛‹Õ^≈RU∂ÏGïÓ¢ÉFú’eña“}Ä—¬è;⁄ÄêyçïÊJfiMî{*ì
> fú!–~√bdO≠◊Lû€˘¯˚tÜ–p?ÁV_˚π§ÇfEâi¶0†Ÿàü˚Ö:zCä3Ë≥˚¢ 9îf¬w7(EÕÕ„œ¸?’ÃêI@DMöÕÚ‹*qòÕGÉ•|§œ€‚+ødBÄ/”€?W‚µÿ⁄ŒÆ∏‹∂—|†fiè∑mDtÔÒV€÷ ŸÍ´*Û˜ûÃMÀ$`öÇ~^Ñ2\‘n±≥#,&K#ZNÖt˚∫È    3#≈‡”≥õ!û”≠]„(rŸß∞Ø„uâ¶<#0ˇFïfYˇˇˇˇˇ[gÙE…`óˇí¿≤ǬiØ√ëÄÄZźëüØǺrµxû^áÄ
> ã.ƃ◊@˛H$\/¬9˙@ÊB@2=x:u7æ3/ü*Ï$èı“˛'˘v˜‚¯/˚°ëSî<T∑"≈$Ø%%$…"s#u# #Ï#e#˜#Ò#˘#~#¢"≥""!®ä¸∑6b”}®.T8–?rÛ)íËJ¢~¯∞o§d∆Ä+f-flxLÜ°€S4D›£W´≥º(áNŒ‰Y«“i~ev0ó¨6¯s—@Ïô&~•ë›¿ì§◊Íyîܶ[0∆ø‹ä€MEf±ÿÙù7*ü·Ÿß¶LP∞/%,†VT+ó≠ÕhÕÃÒîπ¶  ôu4wè˘…SJ~èáM∏È¥í¨µ¬¢ùJÙˇ∞ÜûAÅâÖt4:m
> úx,˚Ÿ´fi≠ˇ˝BA~Ca1Ô}óAÄjm»∑ºö‡ªqwYG¶ùfi◊π{‹≥¬=L=æ
> ıˇ∂—◊flŸ—‚Ë‘¬SA˛˜˛4£*ŸÙ“„x√˘¡7òˆ°è)ª:UXˇˇˇˇˇˇˇ4ñfi”ôtâh≠‹¡Ñ≥úîÄÄÄÇÉ©3º®∏ê•oâÄJÉx§‘–›˜veá',2Á;ZB[CÍAe>Ñ983¨-_(s$è-@Å˛,¯€ıI˜H˙˘˛:v Éohj!Ò#%÷$j#ç"7#3#ñ#Ö#6#À#C$$”#›"\""{!
> t=Z|ôNU
> s7.g|A»÷ÁãÇÒ;˛ˇfl„kìúØõxB≈æÈ"®Äô3ùyœS>së   ó—}-vä_jP‡>EŸÌÒ–Gı|⁄≤O!˛ÏeôÌVwóÔÓ¸‹µüÑEtP˜cw£
> %jòï·‚”¿6™.Á‹éAÊ∆⁄TR?Wøƒ≤Çú—R7-_:O9a(1ógüΩ=-úÂæÌ—ºâôt©U.
> XÄ0=YR|tŒ¶<Êõèf •ÕJ|)bJ]pA=‰¸π’‚˙›
> F
> ÙÛtm†œ„¢>®∞¡£∏êj>~˝$˝N=’œı≈í ∑âflIQ¢*√¯˜≈ó¡˛
> û¨|è+B>^ˇˇˇˇˇˇˇAÔÈ    ¢Sô‘´
> ºz∞çÄÄÄtàp´ó∏Ö±rô§ÉÄ∏Ñr•≈Œãı˛'0!9N@ÑBºAô>k8Q1™*&#: áˇ¯Kˆx˜z˚û~µblV9Ò
> o#∫$˙#´""q"`#…#∂#„# $X$<$é#fl"ñ"Ú h
> {44&ë0®5xÇZlíp¬Øzü-9);Óh8%jÆä°à‰|Öß<j ∑ñ Bc±«PìÁœ∑ÅùSüó;)¿!ñ∫©XÒ™>◊¢9µ⁄)-uÏJyƒ
> ⁄ÊÑò⁄íyQ⁄Äpp´çΩ⁄“ 

此文件之前的文件处于hexl模式。这是否意味着它是十六进制的?

1 个答案:

答案 0 :(得分:1)

从所有评论中我认为我已经猜到了你想要的东西。

但有一件事是肯定的:你的问题与UTF-8完全无关。

您的文件以以下字节开头:f7 12 db 12 14 1a ac 1c 并且正如有人评论文件中的前4个未签名短片可能是4855, 4859, 6676, 7340,这对于您想要在图形中表示的数据来说似乎是合理的。

Hexadecimal   decimal
---------------------
12f7          4855
12db          4859
141a          6676
ac1c          7340

你可能会在这里看到一个模式。

所以这就是你需要在peudocode中做的事情:

重复直到文件结尾:

  • 从文件中读取两个字节并存储在b1b2
  • 您想要的短值是(b2 << 8) | b1

前2个字节发生的情况示例:

  • 在第一次迭代中,您将f7中的b112中的b2
  • b2 << 812001200 | f712f7,小数为4855